On Saturday, December 24, 2022 12:26:30 AM PST AMADOR BARRAGAN AGUILERA wrote: > AFAICT I'm not building from source, just installing the software, which > happens to require compiling some C sources. I tried building 11.2 on a > fresh Fedora 37 and gcc 12.1.2 install and the build failed. The errors > from the output are in the 11.2 attached file. > > I noticed that 12.0.9 allegedly supports compiling in newer toolchains but > the build failed again and the errors I got are in the 12.0.9 file. > > I'm new to building software and submitting bugs and hopefully this is the > right place to ask: should I submit this via Savannah? >
Please try the attached patch. The “newer toolchains” referred to are from Ubuntu 22.04, which uses gcc 11 by default. I haven’t tried gcc 12.
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); \