attempt to fix #91
[m6w6/ext-http] / src / php_http_message_body.c
index 526c233f18af4a3aebaabfcb1f7d4ba49f52063f..b2e643be4b39491f4b4f90865e76edd530cdf06c 100644 (file)
@@ -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) {
-               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;
@@ -262,9 +262,14 @@ void php_http_message_body_add_part(php_http_message_body_t *body, php_http_mess
 
 ZEND_RESULT_CODE php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len)
 {
-       zend_string *safe_name = zend_string_init(name, strlen(name), 0);
+       zend_string *safe_name, *zstr_name = zend_string_init(name, strlen(name), 0);
 
-       safe_name = php_addslashes(safe_name, 1);
+#if PHP_VERSION_ID < 70300
+       safe_name = php_addslashes(zstr_name, 1);
+#else
+       safe_name = php_addslashes(zstr_name);
+       zend_string_release_ex(zstr_name, 0);
+#endif
 
        BOUNDARY_OPEN(body);
        php_http_message_body_appendf(
@@ -284,9 +289,14 @@ ZEND_RESULT_CODE php_http_message_body_add_form_file(php_http_message_body_t *bo
 {
        size_t path_len = strlen(path);
        char *path_dup = estrndup(path, path_len);
-       zend_string *base_name, *safe_name = zend_string_init(name, strlen(name), 0);
-
-       safe_name = php_addslashes(safe_name, 1);
+       zend_string *base_name, *safe_name, *zstr_name = zend_string_init(name, strlen(name), 0);
+
+#if PHP_VERSION_ID < 70300
+       safe_name = php_addslashes(zstr_name, 1);
+#else
+       safe_name = php_addslashes(zstr_name);
+       zend_string_release_ex(zstr_name, 0);
+#endif
        base_name = php_basename(path_dup, path_len, NULL, 0);
 
        BOUNDARY_OPEN(body);
@@ -897,7 +907,7 @@ PHP_METHOD(HttpMessageBody, stat)
 }
 
 static zend_function_entry php_http_message_body_methods[] = {
-       PHP_ME(HttpMessageBody, __construct,  ai_HttpMessageBody___construct,  ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
+       PHP_ME(HttpMessageBody, __construct,  ai_HttpMessageBody___construct,  ZEND_ACC_PUBLIC)
        PHP_ME(HttpMessageBody, __toString,   ai_HttpMessageBody___toString,   ZEND_ACC_PUBLIC)
        PHP_MALIAS(HttpMessageBody, toString, __toString, ai_HttpMessageBody___toString, ZEND_ACC_PUBLIC)
        PHP_MALIAS(HttpMessageBody, serialize, __toString, ai_HttpMessageBody___toString, ZEND_ACC_PUBLIC)