Commit 5235e541 authored by Jun Hiroe's avatar Jun Hiroe

Fix mrb_convert_to_integer.

parent aec12c30
...@@ -316,6 +316,7 @@ MRB_API mrb_sym mrb_obj_to_sym(mrb_state *mrb, mrb_value name); ...@@ -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_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_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_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_Integer(mrb_state *mrb, mrb_value val);
MRB_API mrb_value mrb_Float(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); MRB_API mrb_value mrb_inspect(mrb_state *mrb, mrb_value obj);
......
...@@ -516,7 +516,7 @@ mrb_to_int(mrb_state *mrb, mrb_value val) ...@@ -516,7 +516,7 @@ mrb_to_int(mrb_state *mrb, mrb_value val)
return mrb_to_integer(mrb, val, "to_int"); 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_convert_to_integer(mrb_state *mrb, mrb_value val, int base)
{ {
mrb_value tmp; mrb_value tmp;
...@@ -537,13 +537,17 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base) ...@@ -537,13 +537,17 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base)
if (base != 0) goto arg_error; if (base != 0) goto arg_error;
return val; return val;
case MRB_TT_STRING:
string_conv:
return mrb_str_to_inum(mrb, val, base, TRUE);
default: default:
break; break;
} }
if (base != 0) { if (base != 0) {
tmp = mrb_check_string_type(mrb, val); tmp = mrb_check_string_type(mrb, val);
if (!mrb_nil_p(tmp)) { if (!mrb_nil_p(tmp)) {
return mrb_str_to_inum(mrb, val, base, TRUE); goto string_conv;
} }
arg_error: arg_error:
mrb_raise(mrb, E_ARGUMENT_ERROR, "base specified for non string value"); mrb_raise(mrb, E_ARGUMENT_ERROR, "base specified for non string value");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment