summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/cmd-find.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/tmux/cmd-find.c')
-rw-r--r--usr.bin/tmux/cmd-find.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/usr.bin/tmux/cmd-find.c b/usr.bin/tmux/cmd-find.c
index 6b2479b8c03..8f0be8baa72 100644
--- a/usr.bin/tmux/cmd-find.c
+++ b/usr.bin/tmux/cmd-find.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-find.c,v 1.23 2015/12/15 00:00:01 nicm Exp $ */
+/* $OpenBSD: cmd-find.c,v 1.24 2015/12/15 00:11:24 nicm Exp $ */
/*
* Copyright (c) 2015 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -873,22 +873,23 @@ cmd_find_target(struct cmd_find_state *fs, struct cmd_q *cmdq,
log_debug("%s: target %s, type %d", __func__, target, type);
log_debug("%s: cmdq %p, flags %#x", __func__, cmdq, flags);
+ /* Clear new state. */
+ cmd_find_clear_state(fs, cmdq, flags);
+
/* Find current state. */
- cmd_find_clear_state(&current, cmdq, flags);
+ fs->current = NULL;
if (server_check_marked() && (flags & CMD_FIND_DEFAULT_MARKED))
- cmd_find_copy_state(&current, &marked_pane);
- else {
+ fs->current = &marked_pane;
+ if (fs->current == NULL) {
+ cmd_find_clear_state(&current, cmdq, flags);
if (cmd_find_current_session(&current) != 0) {
if (~flags & CMD_FIND_QUIET)
cmdq_error(cmdq, "no current session");
goto error;
}
+ fs->current = &current;
}
- /* Clear new state. */
- cmd_find_clear_state(fs, cmdq, flags);
- fs->current = &current;
-
/* An empty or NULL target is the current. */
if (target == NULL || *target == '\0')
goto current;
@@ -1087,9 +1088,9 @@ cmd_find_target(struct cmd_find_state *fs, struct cmd_q *cmdq,
current:
/* Use the current session. */
+ cmd_find_copy_state(fs, fs->current);
if (flags & CMD_FIND_WINDOW_INDEX)
- current.idx = -1;
- memcpy(fs, &current, sizeof *fs);
+ fs->idx = -1;
goto found;
error: