Merge remote-tracking branch 'refs/remotes/tmux-openbsd/master'

* refs/remotes/tmux-openbsd/master:
  Do not always perform environment variable assignments inside %else, GitHub issue 5688 from Tushar Muralidharan.
  Check format time in format_skip1 before the loop as well.
This commit is contained in:
tmux update bot
2026-10-05 15:10:12 +00:00
2 changed files with 12 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
/* $OpenBSD: cmd-parse.y,v 1.60 2026/09/08 10:20:08 nicm Exp $ */
/* $OpenBSD: cmd-parse.y,v 1.61 2026/10/05 13:45:49 nicm Exp $ */
/*
* Copyright (c) 2019 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -41,6 +41,7 @@ static char *yylex_format(void);
struct cmd_parse_scope {
int flag;
int taken;
TAILQ_ENTRY (cmd_parse_scope) entry;
};
@@ -272,6 +273,7 @@ if_open : IF expanded
scope = xmalloc(sizeof *scope);
$$ = scope->flag = format_true($2);
scope->taken = scope->flag;
free($2);
if (ps->scope != NULL)
@@ -285,7 +287,8 @@ if_else : ELSE
struct cmd_parse_scope *scope;
scope = xmalloc(sizeof *scope);
scope->flag = !ps->scope->flag;
scope->flag = !ps->scope->taken;
scope->taken = 1;
free(ps->scope);
ps->scope = scope;
@@ -297,7 +300,9 @@ if_elif : ELIF expanded
struct cmd_parse_scope *scope;
scope = xmalloc(sizeof *scope);
$$ = scope->flag = format_true($2);
scope->flag = !ps->scope->taken && format_true($2);
scope->taken = ps->scope->taken || scope->flag;
$$ = scope->flag;
free($2);
free(ps->scope);

View File

@@ -1,4 +1,4 @@
/* $OpenBSD: format.c,v 1.424 2026/09/29 14:12:21 nicm Exp $ */
/* $OpenBSD: format.c,v 1.425 2026/10/05 10:59:37 nicm Exp $ */
/*
* Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -4831,6 +4831,9 @@ format_skip1(struct format_expand_state *es, const char *s, const char *end)
int brackets = 0;
u_int check = 0;
if (es != NULL && !format_check_time(es, NULL))
return (NULL);
for (; *s != '\0'; s++) {
if (es != NULL && !format_check_time(es, &check))
return (NULL);