X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=phpstr%2Fphpstr.c;h=45c9e2632bb6293a10765d59f6dd941e598b4335;hb=3f97cec39ebeae3bdafc082d310e878f995b04e8;hp=3e8e311ee464246e24ce0e9383e79039b46cf488;hpb=5c5ddf9042732a05100245844fe2fb70bfe6d495;p=m6w6%2Fext-http diff --git a/phpstr/phpstr.c b/phpstr/phpstr.c index 3e8e311..45c9e26 100644 --- a/phpstr/phpstr.c +++ b/phpstr/phpstr.c @@ -4,7 +4,7 @@ #include "php.h" #include "phpstr.h" -PHPSTR_API phpstr *phpstr_init_ex(phpstr *buf, size_t chunk_size, zend_bool pre_alloc) +PHPSTR_API phpstr *phpstr_init_ex(phpstr *buf, size_t chunk_size, int pre_alloc) { if (!buf) { buf = emalloc(sizeof(phpstr)); @@ -262,7 +262,7 @@ PHPSTR_API size_t phpstr_chunk_buffer(phpstr **s, const char *data, size_t data_ if (!chunk_size) { phpstr_data(storage, chunk, &chunk_size); - phpstr_free(&storage); + phpstr_free(s); return chunk_size; } @@ -287,6 +287,11 @@ PHPSTR_API void phpstr_chunked_output(phpstr **s, const char *data, size_t data_ efree(chunk); data = NULL; data_len = 0; + if (!chunk_len) { + /* we already got the last chunk, + and freed all resources */ + break; + } } }