X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_buffer.c;h=9ff4065321150cb25a95589b9159bd780017a74d;hp=b214f1d83185db8f345d35e47ca19c02707e7526;hb=02db4df1bc8a7a6fef41297c082ecfe5d259ca96;hpb=512de8cdaf8a02b4329e0ceb8368cb8f15eba7cb diff --git a/src/php_http_buffer.c b/src/php_http_buffer.c index b214f1d..9ff4065 100644 --- a/src/php_http_buffer.c +++ b/src/php_http_buffer.c @@ -35,9 +35,13 @@ PHP_HTTP_BUFFER_API php_http_buffer_t *php_http_buffer_init_ex( PHP_HTTP_BUFFER_API php_http_buffer_t *php_http_buffer_from_string_ex( php_http_buffer_t *buf, const char *str, size_t len) { - if ((buf = php_http_buffer_init(buf))) { + int free_buf = !!buf; + + if (EXPECTED(buf = php_http_buffer_init(buf))) { if (PHP_HTTP_BUFFER_NOMEM == php_http_buffer_append(buf, str, len)) { - pefree(buf, buf->pmem); + if (free_buf) { + pefree(buf, buf->pmem); + } buf = NULL; } } @@ -55,7 +59,7 @@ PHP_HTTP_BUFFER_API size_t php_http_buffer_resize_ex( if (buf->free < len) { size_t size = override_size ? override_size : buf->size; - while ((size + buf->free) < len) { + while (UNEXPECTED((size + buf->free) < len)) { size <<= 1; } @@ -296,7 +300,7 @@ PHP_HTTP_BUFFER_API size_t php_http_buffer_chunked_input(php_http_buffer_t **s, php_http_buffer_t *str; size_t passed; - if (!*s) { + if (UNEXPECTED(!*s)) { *s = php_http_buffer_init_ex(NULL, chunk_size, chunk_size ? PHP_HTTP_BUFFER_INIT_PREALLOC : 0); }