diff options
Diffstat (limited to 'sprintf.c')
-rw-r--r-- | sprintf.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -55,8 +55,9 @@ sign_bits(int base, const char *p) #define CHECK(l) do {\ int cr = ENC_CODERANGE(result);\ - while (blen + (l) >= bsiz) {\ + while ((l) >= bsiz - blen) {\ bsiz*=2;\ + if (bsiz<0) rb_raise(rb_eArgError, "too big specifier");\ }\ rb_str_resize(result, bsiz);\ ENC_CODERANGE_SET(result, cr);\ |