=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd.c,v retrieving revision 1.127 retrieving revision 1.128 diff -u -r1.127 -r1.128 --- src/usr.bin/tmux/cmd.c 2016/10/21 13:51:59 1.127 +++ src/usr.bin/tmux/cmd.c 2016/11/02 13:35:36 1.128 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd.c,v 1.127 2016/10/21 13:51:59 nicm Exp $ */ +/* $OpenBSD: cmd.c,v 1.128 2016/11/02 13:35:36 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -451,8 +451,11 @@ log_debug("%s: flag %c %d %#x", __func__, c, flag, targetflags); error = cmd_find_current(¤t, item, targetflags); - if (error != 0 && ~targetflags & CMD_FIND_QUIET) - return (-1); + if (error != 0) { + if (~targetflags & CMD_FIND_QUIET) + return (-1); + cmd_find_clear_state(¤t, NULL, 0); + } if (!cmd_find_empty_state(¤t) && !cmd_find_valid_state(¤t)) fatalx("invalid current state"); @@ -467,8 +470,8 @@ case CMD_SESSION_WITHPANE: error = cmd_find_target(fs, ¤t, item, target, CMD_FIND_SESSION, targetflags); - if (error != 0 && ~targetflags & CMD_FIND_QUIET) - return (-1); + if (error != 0) + goto error; break; case CMD_MOVEW_R: error = cmd_find_target(fs, ¤t, item, target, @@ -482,20 +485,26 @@ case CMD_WINDOW_INDEX: error = cmd_find_target(fs, ¤t, item, target, CMD_FIND_WINDOW, targetflags); - if (error != 0 && ~targetflags & CMD_FIND_QUIET) - return (-1); + if (error != 0) + goto error; break; case CMD_PANE: case CMD_PANE_CANFAIL: case CMD_PANE_MARKED: error = cmd_find_target(fs, ¤t, item, target, CMD_FIND_PANE, targetflags); - if (error != 0 && ~targetflags & CMD_FIND_QUIET) - return (-1); + if (error != 0) + goto error; break; default: fatalx("unknown %cflag %d", c, flag); } + return (0); + +error: + if (~targetflags & CMD_FIND_QUIET) + return (-1); + cmd_find_clear_state(fs, NULL, 0); return (0); }