=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd.c,v retrieving revision 1.123 retrieving revision 1.124 diff -c -r1.123 -r1.124 *** src/usr.bin/tmux/cmd.c 2016/10/05 12:32:13 1.123 --- src/usr.bin/tmux/cmd.c 2016/10/13 10:01:49 1.124 *************** *** 1,4 **** ! /* $OpenBSD: cmd.c,v 1.123 2016/10/05 12:32:13 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd.c,v 1.124 2016/10/13 10:01:49 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 456,467 **** current = &parent->state.tflag; else if (c == 's') current = &parent->state.sflag; ! } else { error = cmd_find_current(&tmp, cmdq, targetflags); if (error != 0 && ~targetflags & CMD_FIND_QUIET) return (-1); current = &tmp; } switch (flag) { case CMD_NONE: --- 456,470 ---- current = &parent->state.tflag; else if (c == 's') current = &parent->state.sflag; ! } ! if (current == NULL || !cmd_find_valid_state(current)) { error = cmd_find_current(&tmp, cmdq, targetflags); if (error != 0 && ~targetflags & CMD_FIND_QUIET) return (-1); current = &tmp; } + if (!cmd_find_empty_state(current) && !cmd_find_valid_state(current)) + fatalx("invalid current state"); switch (flag) { case CMD_NONE: *************** *** 557,562 **** --- 560,572 ---- error = cmd_prepare_state_flag('s', s, entry->sflag, cmdq, parent); if (error != 0) return (error); + + if (!cmd_find_empty_state(&state->tflag) && + !cmd_find_valid_state(&state->tflag)) + fatalx("invalid -t state"); + if (!cmd_find_empty_state(&state->sflag) && + !cmd_find_valid_state(&state->sflag)) + fatalx("invalid -s state"); return (0); }