]> birchwood-abbey.net Git - mit-scheme.git/commitdiff
Fix bug revealed by gcc 12.
authorChris Hanson <org/chris-hanson/cph>
Tue, 27 Dec 2022 04:05:59 +0000 (20:05 -0800)
committerChris Hanson <org/chris-hanson/cph>
Tue, 27 Dec 2022 04:05:59 +0000 (20:05 -0800)
src/microcode/regex.c

index d2c46adf0c8329e1e5e27c37863515a8b11d573c..b9832eb48de96522e5cfc6ddcb2140933b50b1bd 100644 (file)
@@ -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);                                   \