From 4b37c7cf547384787b687c577a9aabf0f59d2b06 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Tue, 5 Dec 2006 18:53:00 +0000 Subject: backport from ruby_1_8 * hash.c (rb_hash_s_create): fixed memory leak, based on the patch by Kent Sibilev . fixed: [ruby-talk:211233] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_5@11345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ hash.c | 19 ++++++++++++++----- version.h | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc21c335bf..4645b26815 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17,6 +17,11 @@ Sat Sep 23 21:34:15 2006 Yukihiro Matsumoto * lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content may be empty. a patch from Jamis Buck . +Tue Aug 29 19:10:10 2006 Nobuyoshi Nakada + + * hash.c (rb_hash_s_create): fixed memory leak, based on the patch + by Kent Sibilev . fixed: [ruby-talk:211233] + Fri Aug 25 17:15:17 2006 Yukihiro Matsumoto * stable version 1.8.5 released. diff --git a/hash.c b/hash.c index dc804ebd34..0d4d43315b 100644 --- a/hash.c +++ b/hash.c @@ -223,20 +223,31 @@ rb_hash_foreach(hash, func, farg) rb_ensure(hash_foreach_call, (VALUE)&arg, hash_foreach_ensure, hash); } +static VALUE hash_alloc0 _((VALUE)); static VALUE hash_alloc _((VALUE)); static VALUE -hash_alloc(klass) +hash_alloc0(klass) VALUE klass; { NEWOBJ(hash, struct RHash); OBJSETUP(hash, klass, T_HASH); hash->ifnone = Qnil; - hash->tbl = st_init_table(&objhash); return (VALUE)hash; } +static VALUE +hash_alloc(klass) + VALUE klass; +{ + VALUE hash = hash_alloc0(klass); + + RHASH(hash)->tbl = st_init_table(&objhash); + + return hash; +} + VALUE rb_hash_new() { @@ -325,9 +336,7 @@ rb_hash_s_create(argc, argv, klass) int i; if (argc == 1 && TYPE(argv[0]) == T_HASH) { - hash = hash_alloc(klass); - - RHASH(hash)->ifnone = Qnil; + hash = hash_alloc0(klass); RHASH(hash)->tbl = st_copy(RHASH(argv[0])->tbl); return hash; diff --git a/version.h b/version.h index 97a6a6c498..0a4fa1a127 100644 --- a/version.h +++ b/version.h @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2006-12-04" #define RUBY_VERSION_CODE 185 #define RUBY_RELEASE_CODE 20061204 -#define RUBY_PATCHLEVEL 2 +#define RUBY_PATCHLEVEL 3 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 -- cgit v1.2.3