diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-18 13:08:13 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-18 13:08:13 +0000 |
commit | 21631ecabe4d09c4b5b76e35c0a0a7c84935fb8e (patch) | |
tree | f6599c99c3355ad1d32d77a7a6f8640ae94a9663 | |
parent | e9fae3a2a933510d81c59dead581ddc02c8105d7 (diff) | |
download | ruby-21631ecabe4d09c4b5b76e35c0a0a7c84935fb8e.tar.gz |
merge revision(s) 20360:20363:
* ext/gdbm/gdbm.c: do not set members of RSTRING(str) directly.
[ruby-dev:37182]
* ext/gdbm/gdbm.c (rb_gdbm_nextkey): fix memory leak.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@22406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ext/gdbm/gdbm.c | 26 | ||||
-rw-r--r-- | version.h | 8 |
3 files changed, 18 insertions, 23 deletions
@@ -1,3 +1,10 @@ +Wed Feb 18 22:07:44 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com> + + * ext/gdbm/gdbm.c: do not set members of RSTRING(str) directly. + [ruby-dev:37182] + + * ext/gdbm/gdbm.c (rb_gdbm_nextkey): fix memory leak. + Tue Feb 17 11:58:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> * string.c (str_independent): no independent string points null_str. diff --git a/ext/gdbm/gdbm.c b/ext/gdbm/gdbm.c index 82109fda90..2057101206 100644 --- a/ext/gdbm/gdbm.c +++ b/ext/gdbm/gdbm.c @@ -303,14 +303,10 @@ rb_gdbm_fetch(dbm, key) if (val.dptr == 0) return Qnil; - str = rb_obj_alloc(rb_cString); - RSTRING(str)->len = val.dsize; - RSTRING(str)->aux.capa = val.dsize; - RSTRING(str)->ptr = REALLOC_N(val.dptr,char,val.dsize+1); - RSTRING(str)->ptr[val.dsize] = '\0'; - + str = rb_str_new(val.dptr, val.dsize); + free(val.dptr); OBJ_TAINT(str); - return (VALUE)str; + return str; } static VALUE @@ -349,12 +345,8 @@ rb_gdbm_firstkey(dbm) if (key.dptr == 0) return Qnil; - str = rb_obj_alloc(rb_cString); - RSTRING(str)->len = key.dsize; - RSTRING(str)->aux.capa = key.dsize; - RSTRING(str)->ptr = REALLOC_N(key.dptr,char,key.dsize+1); - RSTRING(str)->ptr[RSTRING(str)->len] = '\0'; - + str = rb_str_new(key.dptr, key.dsize); + free(key.dptr); OBJ_TAINT(str); return str; } @@ -373,12 +365,8 @@ rb_gdbm_nextkey(dbm, keystr) if (key2.dptr == 0) return Qnil; - str = rb_obj_alloc(rb_cString); - RSTRING(str)->len = key2.dsize; - RSTRING(str)->aux.capa = key2.dsize; - RSTRING(str)->ptr = REALLOC_N(key2.dptr,char,key2.dsize+1); - RSTRING(str)->ptr[RSTRING(str)->len] = '\0'; - + str = rb_str_new(key2.dptr, key2.dsize); + free(key2.dptr); OBJ_TAINT(str); return str; } @@ -1,15 +1,15 @@ #define RUBY_VERSION "1.8.7" -#define RUBY_RELEASE_DATE "2009-02-17" +#define RUBY_RELEASE_DATE "2009-02-18" #define RUBY_VERSION_CODE 187 -#define RUBY_RELEASE_CODE 20090217 -#define RUBY_PATCHLEVEL 123 +#define RUBY_RELEASE_CODE 20090218 +#define RUBY_PATCHLEVEL 124 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 #define RUBY_VERSION_TEENY 7 #define RUBY_RELEASE_YEAR 2009 #define RUBY_RELEASE_MONTH 2 -#define RUBY_RELEASE_DAY 17 +#define RUBY_RELEASE_DAY 18 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; |