diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-12-09 21:43:31 -0800 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-12-09 21:43:31 -0800 |
| commit | dc18042e058f4e2e29725d475917723b70b0b66e (patch) | |
| tree | 4662cf71997afc68f232d06e26e9b4caf93bd0a2 /src | |
| parent | 453980d76ae0ac22dc490612fefcab9cd756950f (diff) | |
| parent | a7182c20eb6202738b8fe05c204822f7a94222a5 (diff) | |
| download | mruby-dc18042e058f4e2e29725d475917723b70b0b66e.tar.gz mruby-dc18042e058f4e2e29725d475917723b70b0b66e.zip | |
Merge pull request #606 from masamitsu-murase/fix_memory_leak_in_string_to_i
Fix memory leak in String#to_i and String#to_f.
Diffstat (limited to 'src')
| -rw-r--r-- | src/string.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/string.c b/src/string.c index 7ab6e5806..ac79f7c58 100644 --- a/src/string.c +++ b/src/string.c @@ -2544,12 +2544,8 @@ mrb_str_to_inum(mrb_state *mrb, mrb_value str, int base, int badcheck) if (s) { len = RSTRING_LEN(str); if (s[len]) { /* no sentinel somehow */ - char *p = (char *)mrb_malloc(mrb, len+1); - - //MEMCPY(p, s, char, len); - memcpy(p, s, len); - p[len] = '\0'; - s = p; + struct RString *temp_str = str_new(mrb, s, len); + s = temp_str->ptr; } } return mrb_cstr_to_inum(mrb, s, base, badcheck); @@ -2681,11 +2677,8 @@ mrb_str_to_dbl(mrb_state *mrb, mrb_value str, int badcheck) mrb_raise(mrb, E_ARGUMENT_ERROR, "string for Float contains null byte"); } if (s[len]) { /* no sentinel somehow */ - char *p = (char *)mrb_malloc(mrb, len+1); - - memcpy(p, s, len); - p[len] = '\0'; - s = p; + struct RString *temp_str = str_new(mrb, s, len); + s = temp_str->ptr; } } return mrb_cstr_to_dbl(mrb, s, badcheck); |
