summaryrefslogtreecommitdiffstats
path: root/cmd-set-option.c
diff options
context:
space:
mode:
authornicm <nicm>2016-10-09 07:58:35 +0000
committernicm <nicm>2016-10-09 07:58:35 +0000
commit48dd250af1ee7d097ed89ad793428a4ce139f381 (patch)
tree5a229682248bf1faca9e47621bc68cd973f7eede /cmd-set-option.c
parent44449b305bcfa43233c7cc6f67b059414514c649 (diff)
Handle NULL window or session for user options.
Diffstat (limited to 'cmd-set-option.c')
-rw-r--r--cmd-set-option.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/cmd-set-option.c b/cmd-set-option.c
index 491353a8..0f116b6f 100644
--- a/cmd-set-option.c
+++ b/cmd-set-option.c
@@ -232,6 +232,7 @@ cmd_set_option_user(struct cmd *self, struct cmd_q *cmdq, const char *optstr,
struct winlink *wl = cmdq->state.tflag.wl;
struct options *oo;
struct options_entry *o;
+ const char *target;
if (args_has(args, 's'))
oo = global_options;
@@ -239,12 +240,28 @@ cmd_set_option_user(struct cmd *self, struct cmd_q *cmdq, const char *optstr,
self->entry == &cmd_set_window_option_entry) {
if (args_has(self->args, 'g'))
oo = global_w_options;
- else
+ else if (wl == NULL) {
+ target = args_get(args, 't');
+ if (target != NULL) {
+ cmdq_error(cmdq, "no such window: %s",
+ target);
+ } else
+ cmdq_error(cmdq, "no current window");
+ return (CMD_RETURN_ERROR);
+ } else
oo = wl->window->options;
} else {
if (args_has(self->args, 'g'))
oo = global_s_options;
- else
+ else if (s == NULL) {
+ target = args_get(args, 't');
+ if (target != NULL) {
+ cmdq_error(cmdq, "no such session: %s",
+ target);
+ } else
+ cmdq_error(cmdq, "no current session");
+ return (CMD_RETURN_ERROR);
+ } else
oo = s->options;
}