bug-m4
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

recursive push_string with non-gnu cc


From: Ilya N. Golubev
Subject: recursive push_string with non-gnu cc
Date: Thu, 10 Nov 2005 18:08:17 +0300

Versions: 1.4, 1.4.3, 1.4.4.

Build configurations: all with non-gnu compiler.  (Actually observed
with native `cc' of `alpha-dec-osf5.1'.)

In these configurations `obstack_grow' macro in `lib/obstack.h'
evaluates its 1st arg several times.  If this arg is `push_string_init
()', this causes m4 internal error.

        * input.c (match_input): Do not pass expression with
        side effect to `obstack_grow'.  Fix <INTERNAL ERROR: Recursive
        push_string!>.

--- input.c     Sun May  1 15:38:18 2005
+++ input.c     Thu Nov 10 17:10:05 2005
@@ -531,7 +531,12 @@
     }
 
   /* Failed, push back input.  */
-  obstack_grow (push_string_init (), t, n);
+  {
+    struct obstack *h = push_string_init ();
+
+    /* `obstack_grow' may be macro evaluating its arg 1 several times. */
+    obstack_grow (h, t, n);
+  }
   push_string_finish ();
   return 0;
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]