summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog16
-rw-r--r--parse.y12
2 files changed, 21 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index afc90947173..e7243630360 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,16 @@
+Sun Dec 15 11:43:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (dispose_string): dispose String object.
+
+ * parse.y (heredoc_restore, here_document): fix memory leak.
+
Sat Dec 14 14:25:00 2002 Takaaki Uematsu <mail@uema2.cjb.net>
- * wince/sys : add stat.c, stat.h, timeb.c, timeb.h,
- types.h, utime.c, utime.h
- * wince/dll.mak : object file name changed.
- * wince/io.c : add empty dup2().
- * wince/io.h : add dup2 definition.
+ * wince/sys : add stat.c, stat.h, timeb.c, timeb.h,
+ types.h, utime.c, utime.h
+ * wince/dll.mak : object file name changed.
+ * wince/io.c : add empty dup2().
+ * wince/io.h : add dup2 definition.
Sat Dec 14 01:51:29 2002 WATANABE Hirofumi <eban@ruby-lang.org>
diff --git a/parse.y b/parse.y
index 3b37a53e68a..4ffee17ae12 100644
--- a/parse.y
+++ b/parse.y
@@ -2829,6 +2829,14 @@ enum string_type {
str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND),
};
+static void
+dispose_string(str)
+ VALUE str;
+{
+ free(RSTRING(str)->ptr);
+ rb_gc_force_recycle(str);
+}
+
static int
tokadd_string(func, term, paren)
int func, term, paren;
@@ -3044,7 +3052,7 @@ heredoc_restore(here)
lex_p = lex_pbeg + here->nd_nth;
heredoc_end = ruby_sourceline;
ruby_sourceline = nd_line(here);
- rb_gc_force_recycle(here->nd_lit);
+ dispose_string(here->nd_lit);
rb_gc_force_recycle((VALUE)here);
}
@@ -3099,7 +3107,7 @@ here_document(here)
str = rb_str_new(RSTRING(line)->ptr, RSTRING(line)->len);
lex_p = lex_pend;
if (nextc() == -1) {
- if (str) rb_gc_force_recycle(str);
+ if (str) dispose_string(str);
goto error;
}
} while (!whole_match_p(eos, len, indent));