summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMasamitsu MURASE <[email protected]>2012-12-10 02:29:38 +0900
committerMasamitsu MURASE <[email protected]>2012-12-10 02:29:38 +0900
commita7182c20eb6202738b8fe05c204822f7a94222a5 (patch)
tree4662cf71997afc68f232d06e26e9b4caf93bd0a2 /src
parent453980d76ae0ac22dc490612fefcab9cd756950f (diff)
downloadmruby-a7182c20eb6202738b8fe05c204822f7a94222a5.tar.gz
mruby-a7182c20eb6202738b8fe05c204822f7a94222a5.zip
Fix memory leak in String#to_i and String#to_f.
Diffstat (limited to 'src')
-rw-r--r--src/string.c15
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);