Prevent accepting String value for mrb_get_args("i")

Accepting String value for mrb_get_args("i")
causes unintentional expression.

  * `"str" * "3"` => `"strstrstr"`

This change prevents String->Integer conversion for mrb_get_args("i")
and fixes above problem.

See also:
https://github.com/mruby/mruby/issues/1903
This commit is contained in:
Keita Obo
2014-03-21 21:41:04 +09:00
parent 07bd65ae65
commit 3faa76851d
+3
View File
@@ -612,6 +612,9 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
*p = (mrb_int)f;
}
break;
case MRB_TT_STRING:
mrb_raise(mrb, E_TYPE_ERROR, "String can't be coerced into int");
break;
default:
*p = mrb_fixnum(mrb_Integer(mrb, *sp));
break;