From 738ea76a6a3080b72103d114c28f14491668dfa1 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Mon, 26 Dec 2022 20:05:59 -0800 Subject: [PATCH] Fix bug revealed by gcc 12. --- src/microcode/regex.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/microcode/regex.c b/src/microcode/regex.c index d2c46adf0..b9832eb48 100644 --- a/src/microcode/regex.c +++ b/src/microcode/regex.c @@ -138,21 +138,18 @@ USA. { \ if (stack_pointer == stack_end) \ { \ - long stack_length; \ - unsigned char **stack_temporary; \ - \ - stack_length = ((stack_end - stack_start) * 2); \ + unsigned long stack_length = ((stack_end - stack_start) * 2); \ if (stack_length > (re_max_failures * 2)) \ RE_RETURN (-4); \ - stack_temporary = \ + unsigned long stack_used = (stack_pointer - stack_start); \ + unsigned char ** stack_temporary = \ ((unsigned char **) \ (realloc \ (stack_start, (stack_length * (sizeof (unsigned char *)))))); \ if (stack_temporary == NULL) \ RE_RETURN (-3); \ stack_end = (& (stack_temporary [stack_length])); \ - stack_pointer = \ - (& (stack_temporary [(stack_pointer - stack_start)])); \ + stack_pointer = (& (stack_temporary [stack_used])); \ stack_start = stack_temporary; \ } \ (*stack_pointer++) = (pattern_pc); \ -- 2.47.3