projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
- use zend_hash_find() instead of FOREACH in http_match_request_header() (don't ask)
[m6w6/ext-http]
/
phpstr
/
phpstr.c
diff --git
a/phpstr/phpstr.c
b/phpstr/phpstr.c
index 3e8e311ee464246e24ce0e9383e79039b46cf488..c0d9543f3d3e4a7e5b11b9d20b3aee68f3632c04 100644
(file)
--- a/
phpstr/phpstr.c
+++ b/
phpstr/phpstr.c
@@
-4,7
+4,7
@@
#include "php.h"
#include "phpstr.h"
#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 (!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);
if (!chunk_size) {
phpstr_data(storage, chunk, &chunk_size);
- phpstr_free(
&storage
);
+ phpstr_free(
s
);
return chunk_size;
}
return chunk_size;
}
@@
-284,10
+284,16
@@
PHPSTR_API void phpstr_chunked_output(phpstr **s, const char *data, size_t data_
while (got = phpstr_chunk_buffer(s, data, data_len, &chunk, chunk_len)) {
passthru(chunk, got TSRMLS_CC);
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;
data = NULL;
data_len = 0;
+ STR_SET(chunk, NULL);
}
}
+ STR_FREE(chunk);
}
/*
}
/*