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;
 }


_______________________________________________
Bug-m4 mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-m4

Reply via email to