diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-05-08 21:32:11 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-05-08 21:32:11 +0900 |
| commit | ecc6eb81b53efd5f484515d87b0510eaa68aa68c (patch) | |
| tree | 38594c750ab0d15d3beef351c3881a8436cf0f99 | |
| parent | f405d35dac0311f3b6ec946eb32f671b230dfac4 (diff) | |
| parent | 1975dedb214b9d181630c337374702a1b4725288 (diff) | |
| download | mruby-ecc6eb81b53efd5f484515d87b0510eaa68aa68c.tar.gz mruby-ecc6eb81b53efd5f484515d87b0510eaa68aa68c.zip | |
Merge pull request #4426 from shuujii/use-mrb_string_value_cstr-in-mrb_str_to_dbl
Use `mrb_string_value_cstr` in `mrb_str_to_dbl`
| -rw-r--r-- | mrbgems/mruby-kernel-ext/test/kernel.rb | 2 | ||||
| -rw-r--r-- | src/string.c | 17 |
2 files changed, 3 insertions, 16 deletions
diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb index 28f089007..ad9177165 100644 --- a/mrbgems/mruby-kernel-ext/test/kernel.rb +++ b/mrbgems/mruby-kernel-ext/test/kernel.rb @@ -65,6 +65,8 @@ assert('Kernel#Float') do assert_equal(123.456, Float(123.456)) assert_equal(123.456, Float("123.456")) assert_raise(TypeError) { Float(nil) } + assert_raise(ArgumentError) { Float("1.5a") } + assert_raise(ArgumentError) { Float("1.5\0") } end assert('Kernel#String') do diff --git a/src/string.c b/src/string.c index 7fc405a2b..578e3bdcc 100644 --- a/src/string.c +++ b/src/string.c @@ -2281,22 +2281,7 @@ bad: MRB_API double mrb_str_to_dbl(mrb_state *mrb, mrb_value str, mrb_bool badcheck) { - char *s; - mrb_int len; - - mrb_to_str(mrb, str); - s = RSTRING_PTR(str); - len = RSTRING_LEN(str); - if (s) { - if (badcheck && memchr(s, '\0', len)) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "string for Float contains null byte"); - } - if (s[len]) { /* no sentinel somehow */ - struct RString *temp_str = str_new(mrb, s, len); - s = RSTR_PTR(temp_str); - } - } - return mrb_cstr_to_dbl(mrb, s, badcheck); + return mrb_cstr_to_dbl(mrb, mrb_string_value_cstr(mrb, &str), badcheck); } /* 15.2.10.5.39 */ |
