When deleting or renaming a buffer and a buffer name is specified,
authornicm <nicm@openbsd.org>
Thu, 2 Jun 2022 20:41:21 +0000 (20:41 +0000)
committernicm <nicm@openbsd.org>
Thu, 2 Jun 2022 20:41:21 +0000 (20:41 +0000)
complain if the buffer doesn't exist instead of silently deleting or
renaming the most recent buffer. GitHub issue 3205.

usr.bin/tmux/cmd-set-buffer.c

index f907744..e6e10a8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-set-buffer.c,v 1.32 2021/08/21 10:22:39 nicm Exp $ */
+/* $OpenBSD: cmd-set-buffer.c,v 1.33 2022/06/02 20:41:21 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -69,8 +69,13 @@ cmd_set_buffer_exec(struct cmd *self, struct cmdq_item *item)
                pb = paste_get_name(bufname);
 
        if (cmd_get_entry(self) == &cmd_delete_buffer_entry) {
-               if (pb == NULL)
+               if (pb == NULL) {
+                       if (bufname != NULL) {
+                               cmdq_error(item, "unknown buffer: %s", bufname);
+                               return (CMD_RETURN_ERROR);
+                       }
                        pb = paste_get_top(&bufname);
+               }
                if (pb == NULL) {
                        cmdq_error(item, "no buffer");
                        return (CMD_RETURN_ERROR);
@@ -80,8 +85,13 @@ cmd_set_buffer_exec(struct cmd *self, struct cmdq_item *item)
        }
 
        if (args_has(args, 'n')) {
-               if (pb == NULL)
+               if (pb == NULL) {
+                       if (bufname != NULL) {
+                               cmdq_error(item, "unknown buffer: %s", bufname);
+                               return (CMD_RETURN_ERROR);
+                       }
                        pb = paste_get_top(&bufname);
+               }
                if (pb == NULL) {
                        cmdq_error(item, "no buffer");
                        return (CMD_RETURN_ERROR);