=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-new-window.c,v retrieving revision 1.96 retrieving revision 1.97 diff -c -r1.96 -r1.97 *** src/usr.bin/tmux/cmd-new-window.c 2021/08/27 17:25:55 1.96 --- src/usr.bin/tmux/cmd-new-window.c 2023/09/01 14:24:46 1.97 *************** *** 1,4 **** ! /* $OpenBSD: cmd-new-window.c,v 1.96 2021/08/27 17:25:55 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-new-window.c,v 1.97 2023/09/01 14:24:46 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 60,66 **** struct session *s = target->s; struct winlink *wl = target->wl, *new_wl = NULL; int idx = target->idx, before; ! char *cause = NULL, *cp; const char *template, *name; struct cmd_find_state fs; struct args_value *av; --- 60,66 ---- struct session *s = target->s; struct winlink *wl = target->wl, *new_wl = NULL; int idx = target->idx, before; ! char *cause = NULL, *cp, *expanded; const char *template, *name; struct cmd_find_state fs; struct args_value *av; *************** *** 71,86 **** */ name = args_get(args, 'n'); if (args_has(args, 'S') && name != NULL && target->idx == -1) { RB_FOREACH(wl, winlinks, &s->windows) { ! if (strcmp(wl->window->name, name) != 0) continue; if (new_wl == NULL) { new_wl = wl; continue; } cmdq_error(item, "multiple windows named %s", name); return (CMD_RETURN_ERROR); } if (new_wl != NULL) { if (args_has(args, 'd')) return (CMD_RETURN_NORMAL); --- 71,89 ---- */ name = args_get(args, 'n'); if (args_has(args, 'S') && name != NULL && target->idx == -1) { + expanded = format_single(item, name, c, s, NULL, NULL); RB_FOREACH(wl, winlinks, &s->windows) { ! if (strcmp(wl->window->name, expanded) != 0) continue; if (new_wl == NULL) { new_wl = wl; continue; } cmdq_error(item, "multiple windows named %s", name); + free(expanded); return (CMD_RETURN_ERROR); } + free(expanded); if (new_wl != NULL) { if (args_has(args, 'd')) return (CMD_RETURN_NORMAL);