]> git.saurik.com Git - bison.git/commitdiff
* data/yacc.c [(! defined yyoverflow || YYERROR_VERBOSE) && !
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 17 Feb 2006 00:08:17 +0000 (00:08 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 17 Feb 2006 00:08:17 +0000 (00:08 +0000)
YYSTACK_USE_ALLOCA && ! defined YYSTACK_ALLOC && defined
__cplusplus && ! defined _STDLIB_H && !
((defined YYMALLOC || defined malloc) && (defined YYFREE ||
defined free))]: Include <stdlib.h> rather than rolling our own
declarations of malloc and free, to avoid problems with
incompatible declarations (using 'throw') C++'s stdlib.h.  This
should fix Debian bug 340012
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340012>,
reported by Guillaume Melquiond.

ChangeLog
data/yacc.c

index e9201f035ad83136b0969ebf0ae0ee2685d71b27..c8d3e981fecf007162cd19652910be646981ac2b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-02-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/yacc.c [(! defined yyoverflow || YYERROR_VERBOSE) && !
+       YYSTACK_USE_ALLOCA && ! defined YYSTACK_ALLOC && defined
+       __cplusplus && ! defined _STDLIB_H && !
+       ((defined YYMALLOC || defined malloc) && (defined YYFREE ||
+       defined free))]: Include <stdlib.h> rather than rolling our own
+       declarations of malloc and free, to avoid problems with
+       incompatible declarations (using 'throw') C++'s stdlib.h.  This
+       should fix Debian bug 340012
+       <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340012>,
+       reported by Guillaume Melquiond.
+
 2006-02-13  Paul Eggert  <eggert@cs.ucla.edu>
 
        * NEWS: Clarify symbols versus types in unused-value warnings.
index a6aaef58ed811ce56e61edc07607cad541af128e..6f847177db3f9f5789bb3fd6fadd17f5b7bd4a1e 100644 (file)
@@ -338,8 +338,13 @@ typedef short int yytype_int16;
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  ifdef __cplusplus
-extern "C" {
+#  if (defined __cplusplus && ! defined _STDLIB_H \
+       && ! ((defined YYMALLOC || defined malloc) \
+            && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
+#   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
@@ -353,9 +358,6 @@ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
-#  ifdef __cplusplus
-}
-#  endif
 # endif
 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */