* parse.y (dispose_string): dispose String object.

* parse.y (heredoc_restore, here_document): fix memory leak.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3147 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2002-12-15 02:48:40 +00:00
parent 009f78761d
commit c476b6e05c
2 changed files with 21 additions and 7 deletions

View File

@ -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>

12
parse.y
View File

@ -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));