=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-command-prompt.c,v retrieving revision 1.45 retrieving revision 1.46 diff -c -r1.45 -r1.46 *** src/usr.bin/tmux/cmd-command-prompt.c 2019/05/20 11:46:06 1.45 --- src/usr.bin/tmux/cmd-command-prompt.c 2019/05/23 11:13:30 1.46 *************** *** 1,4 **** ! /* $OpenBSD: cmd-command-prompt.c,v 1.45 2019/05/20 11:46:06 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-command-prompt.c,v 1.46 2019/05/23 11:13:30 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott *************** *** 134,143 **** int done) { struct cmd_command_prompt_cdata *cdata = data; - struct cmd_list *cmdlist; struct cmdq_item *new_item; ! char *cause, *new_template, *prompt, *ptr; char *input = NULL; if (s == NULL) return (0); --- 134,143 ---- int done) { struct cmd_command_prompt_cdata *cdata = data; struct cmdq_item *new_item; ! char *new_template, *prompt, *ptr; char *input = NULL; + struct cmd_parse_result *pr; if (s == NULL) return (0); *************** *** 164,183 **** return (1); } ! cmdlist = cmd_string_parse(new_template, NULL, 0, &cause); ! if (cmdlist == NULL) { ! if (cause != NULL) ! new_item = cmdq_get_error(cause); ! else ! new_item = NULL; ! free(cause); ! } else { ! new_item = cmdq_get_command(cmdlist, NULL, NULL, 0); ! cmd_list_free(cmdlist); ! } ! ! if (new_item != NULL) cmdq_append(c, new_item); if (!done) free(new_template); --- 164,185 ---- return (1); } ! pr = cmd_parse_from_string(new_template, NULL); ! switch (pr->status) { ! case CMD_PARSE_EMPTY: ! new_item = NULL; ! break; ! case CMD_PARSE_ERROR: ! new_item = cmdq_get_error(pr->error); ! free(pr->error); cmdq_append(c, new_item); + break; + case CMD_PARSE_SUCCESS: + new_item = cmdq_get_command(pr->cmdlist, NULL, NULL, 0); + cmd_list_free(pr->cmdlist); + cmdq_append(c, new_item); + break; + } if (!done) free(new_template);