diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-10-29 13:17:50 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-10-29 13:17:50 +0900 |
| commit | 73593f7d193d89bcc160ae388bdd5850ff26c87b (patch) | |
| tree | ba4691431a3f0d63ff6d1750304fa5fd15c70df4 /src | |
| parent | aec12c30e2258148ea8b2a866a1f39b103c7afd7 (diff) | |
| parent | 28c804621a9cace9d689130930c27114f7c1da3a (diff) | |
| download | mruby-73593f7d193d89bcc160ae388bdd5850ff26c87b.tar.gz mruby-73593f7d193d89bcc160ae388bdd5850ff26c87b.zip | |
Merge pull request #2625 from suzukaze/add-kernel.Integer
Add kernel#Integer
Diffstat (limited to 'src')
| -rw-r--r-- | src/object.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/object.c b/src/object.c index 143acfaa4..c5fb74575 100644 --- a/src/object.c +++ b/src/object.c @@ -516,7 +516,7 @@ mrb_to_int(mrb_state *mrb, mrb_value val) return mrb_to_integer(mrb, val, "to_int"); } -static mrb_value +MRB_API mrb_value mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base) { mrb_value tmp; @@ -537,13 +537,17 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base) if (base != 0) goto arg_error; return val; + case MRB_TT_STRING: + string_conv: + return mrb_str_to_inum(mrb, val, base, TRUE); + default: break; } if (base != 0) { tmp = mrb_check_string_type(mrb, val); if (!mrb_nil_p(tmp)) { - return mrb_str_to_inum(mrb, val, base, TRUE); + goto string_conv; } arg_error: mrb_raise(mrb, E_ARGUMENT_ERROR, "base specified for non string value"); |
