ext/yajl/yajl_buf.c in yajl-ruby-1.4.2 vs ext/yajl/yajl_buf.c in yajl-ruby-1.4.3
- old
+ new
@@ -114,13 +114,13 @@
return yajl_buf_ok;
}
need = buf->len;
- while (want >= (need - buf->used)) need <<= 1;
+ while (want >= (need - buf->used) && need > 0) need <<= 1;
// Check for overflow
- if (need < buf->used) {
+ if (need < buf->used || need == 0) {
return yajl_buf_set_error(buf, yajl_buf_overflow);
}
if (need != buf->len) {
buf->data = (unsigned char *) YA_REALLOC(buf->alloc, buf->data, need);