Better error message

Raise argument error with the better message, at the only place
where the size to fill can be negative.
This commit is contained in:
Nobuyoshi Nakada
2017-04-29 10:17:24 +09:00
parent e05c30738e
commit ef6e14ee2b
+4 -1
View File
@@ -116,7 +116,6 @@ mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base)
#define CHECK(l) do {\
/* int cr = ENC_CODERANGE(result);*/\
if ((l) < 0) mrb_raise(mrb, E_ARGUMENT_ERROR, "illegal specifier"); \
while ((l) >= bsiz - blen) {\
bsiz*=2;\
if (bsiz < 0) mrb_raise(mrb, E_ARGUMENT_ERROR, "too big specifier"); \
@@ -1059,6 +1058,10 @@ retry:
if ((flags&FWIDTH) && need < width)
need = width;
need += 20;
if (need <= 0) {
mrb_raise(mrb, E_ARGUMENT_ERROR,
(width > prec ? "width too big" : "prec too big"));
}
CHECK(need);
n = snprintf(&buf[blen], need, fbuf, fval);