From 5235e54137ef8f41f4e546df0a6a957d3162ab1e Mon Sep 17 00:00:00 2001 From: Jun Hiroe Date: Wed, 29 Oct 2014 00:59:02 +0900 Subject: Fix mrb_convert_to_integer. --- include/mruby.h | 1 + src/object.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/mruby.h b/include/mruby.h index 2fd0a4af7..dd7cdab08 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -316,6 +316,7 @@ MRB_API mrb_sym mrb_obj_to_sym(mrb_state *mrb, mrb_value name); MRB_API mrb_bool mrb_obj_eq(mrb_state*, mrb_value, mrb_value); MRB_API mrb_bool mrb_obj_equal(mrb_state*, mrb_value, mrb_value); MRB_API mrb_bool mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2); +MRB_API mrb_value mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base); MRB_API mrb_value mrb_Integer(mrb_state *mrb, mrb_value val); MRB_API mrb_value mrb_Float(mrb_state *mrb, mrb_value val); MRB_API mrb_value mrb_inspect(mrb_state *mrb, mrb_value obj); 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"); -- cgit v1.2.3