#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));
if (!chunk_size) {
phpstr_data(storage, chunk, &chunk_size);
- phpstr_free(&storage);
+ phpstr_free(s);
return chunk_size;
}
while (got = phpstr_chunk_buffer(s, data, data_len, &chunk, chunk_len)) {
passthru(chunk, got TSRMLS_CC);
- efree(chunk);
+ if (!chunk_len) {
+ /* we already got the last chunk,
+ and freed all resources */
+ break;
+ }
data = NULL;
data_len = 0;
+ STR_SET(chunk, NULL);
}
+ STR_FREE(chunk);
}
/*