diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | parse.y | 12 |
2 files changed, 21 insertions, 7 deletions
@@ -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> @@ -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)); |