summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--parse.y9
2 files changed, 14 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index a72901801d..2f3af684c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Oct 19 19:26:15 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_gc_mark_parser): get rid of segfault with old yacc.
+ fixed: [ruby-dev:27439]
+
Wed Oct 19 08:28:32 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_join): elements may contain null pointer strings.
diff --git a/parse.y b/parse.y
index 54b1dcebd4..33c1b6a0e4 100644
--- a/parse.y
+++ b/parse.y
@@ -2467,6 +2467,10 @@ terms : term
none : /* none */ {$$ = 0;}
;
%%
+#ifdef yystacksize
+#undef YYMALLOC
+#endif
+
#include "regex.h"
#include "util.h"
@@ -5756,7 +5760,12 @@ ruby_parser_stack_on_heap()
void
rb_gc_mark_parser()
{
+#if defined YYMALLOC
rb_gc_mark((VALUE)parser_heap);
+#elif defined yystacksize
+ if (yyvsp) rb_gc_mark_locations((VALUE *)yyvs, (VALUE *)yyvsp);
+#endif
+
if (!ruby_in_compile) return;
rb_gc_mark_maybe((VALUE)yylval.node);