projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix package.xml
[m6w6/ext-http]
/
src
/
php_http_message_body.c
diff --git
a/src/php_http_message_body.c
b/src/php_http_message_body.c
index 79c8bf765095852bd2798cf1ae80e077a287de12..97b1a148bf3ae87c9b3984530cd563b3b7133b55 100644
(file)
--- a/
src/php_http_message_body.c
+++ b/
src/php_http_message_body.c
@@
-214,7
+214,7
@@
size_t php_http_message_body_append(php_http_message_body_t *body, const char *b
written = php_stream_write(s, buf, len);
if (written != len) {
written = php_stream_write(s, buf, len);
if (written != len) {
- php_error_docref(NULL, E_WARNING, "Failed to append %zu bytes to body; wrote %zu", len, written);
+ php_error_docref(NULL, E_WARNING, "Failed to append %zu bytes to body; wrote %zu", len, written
== (size_t) -1 ? 0 : written
);
}
return len;
}
return len;
@@
-330,7
+330,7
@@
static inline char *format_key(php_http_arrkey_t *key, const char *prefix) {
} else if (key->key) {
new_key = estrdup(key->key->val);
} else {
} else if (key->key) {
new_key = estrdup(key->key->val);
} else {
-
new_key = estrdup(""
);
+
spprintf(&new_key, 0, "%lu", key->h
);
}
return new_key;
}
return new_key;
@@
-392,14
+392,17
@@
static ZEND_RESULT_CODE add_recursive_files(php_http_message_body_t *body, const
ZEND_HASH_FOREACH_KEY_VAL_IND(files, key.h, key.key, val)
{
if (Z_TYPE_P(val) == IS_ARRAY || Z_TYPE_P(val) == IS_OBJECT) {
ZEND_HASH_FOREACH_KEY_VAL_IND(files, key.h, key.key, val)
{
if (Z_TYPE_P(val) == IS_ARRAY || Z_TYPE_P(val) == IS_OBJECT) {
- char *str = format_key(&key, name);
+ char *str = key.key ? format_key(&key, name) : NULL;
+ const char *prefix = str ? str : name;
- if (SUCCESS != add_recursive_files(body,
str
, HASH_OF(val))) {
+ if (SUCCESS != add_recursive_files(body,
prefix
, HASH_OF(val))) {
efree(str);
HT_UNPROTECT_RECURSION(files);
return FAILURE;
}
efree(str);
HT_UNPROTECT_RECURSION(files);
return FAILURE;
}
- efree(str);
+ if (str) {
+ efree(str);
+ }
}
}
ZEND_HASH_FOREACH_END();
}
}
ZEND_HASH_FOREACH_END();