summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-12-05 18:53:00 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-12-05 18:53:00 +0000
commit4b37c7cf547384787b687c577a9aabf0f59d2b06 (patch)
tree48c575c1f14e71117f97b8af970f8a090252ca26
parent5d653379c2d8142c30e2f1365756b662a2c38eb8 (diff)
backport from ruby_1_8
* hash.c (rb_hash_s_create): fixed memory leak, based on the patch by Kent Sibilev <ksruby at gmail.com>. 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
-rw-r--r--ChangeLog5
-rw-r--r--hash.c19
-rw-r--r--version.h2
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 <matz@ruby-lang.org>
* lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content
may be empty. a patch from Jamis Buck <jamis at 37signals.com>.
+Tue Aug 29 19:10:10 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): fixed memory leak, based on the patch
+ by Kent Sibilev <ksruby at gmail.com>. fixed: [ruby-talk:211233]
+
Fri Aug 25 17:15:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* 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