X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_buffer.c;h=5913cfcd60bd0633fe603ad651ff25c8875ce521;hp=d7cfd56c33b207364083a50036cb910398889b98;hb=71f54fe93cc20ac23c317fd6c7aa93732e9aa766;hpb=b41323e1817c50d062b27da798c7db35fa58212c diff --git a/src/php_http_buffer.c b/src/php_http_buffer.c index d7cfd56..5913cfc 100644 --- a/src/php_http_buffer.c +++ b/src/php_http_buffer.c @@ -10,7 +10,7 @@ +--------------------------------------------------------------------+ */ -#include "php.h" +#include "php_http_api.h" #include "php_http_buffer.h" PHP_HTTP_BUFFER_API php_http_buffer_t *php_http_buffer_init_ex( @@ -37,7 +37,7 @@ PHP_HTTP_BUFFER_API php_http_buffer_t *php_http_buffer_from_string_ex( { int free_buf = !!buf; - if ((buf = php_http_buffer_init(buf))) { + if (EXPECTED(buf = php_http_buffer_init(buf))) { if (PHP_HTTP_BUFFER_NOMEM == php_http_buffer_append(buf, str, len)) { if (free_buf) { pefree(buf, buf->pmem); @@ -59,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; } @@ -117,9 +117,11 @@ PHP_HTTP_BUFFER_API size_t php_http_buffer_append(php_http_buffer_t *buf, ) { return PHP_HTTP_BUFFER_NOMEM; } - memcpy(buf->data + buf->used, append, append_len); - buf->used += append_len; - buf->free -= append_len; + if (append_len) { + memcpy(buf->data + buf->used, append, append_len); + buf->used += append_len; + buf->free -= append_len; + } return append_len; } @@ -147,7 +149,9 @@ PHP_HTTP_BUFFER_API char *php_http_buffer_data(const php_http_buffer_t *buf, char **into, size_t *len) { char *copy = ecalloc(1, buf->used + 1); - memcpy(copy, buf->data, buf->used); + if (buf->data) { + memcpy(copy, buf->data, buf->used); + } if (into) { *into = copy; } @@ -300,7 +304,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); }