don't release twice
[m6w6/ext-http] / php_http_env.c
index 1e34fd10674d455e62317248d224cb8376e7a7a9..af0039473eeb02e0e0b96da14857eabee55b3090 100644 (file)
@@ -530,7 +530,7 @@ ZEND_RESULT_CODE php_http_env_set_response_header_value(long http_code, const ch
                zval *data_ptr;
                HashTable *ht = HASH_OF(value);
 
-               ZEND_HASH_FOREACH_VAL(ht, data_ptr)
+               ZEND_HASH_FOREACH_VAL_IND(ht, data_ptr)
                {
                        if (SUCCESS != php_http_env_set_response_header_value(http_code, name_str, name_len, data_ptr, first)) {
                                return FAILURE;
@@ -952,14 +952,15 @@ static SAPI_POST_HANDLER_FUNC(php_http_json_post_handler)
 
        if (json) {
                if (json->len) {
-                       zval zjson;
+                       zval tmp;
 
-                       ZVAL_NULL(&zjson);
-                       php_json_decode(&zjson, json->val, json->len, 1, PG(max_input_nesting_level));
-                       if (Z_TYPE(zjson) != IS_NULL) {
-                               zval_dtor(zarg);
-                               ZVAL_COPY_VALUE(zarg, (&zjson));
+                       ZVAL_NULL(&tmp);
+                       php_json_decode(&tmp, json->val, json->len, 1, PG(max_input_nesting_level));
+
+                       if (Z_TYPE(tmp) == IS_ARRAY) {
+                               array_copy(Z_ARRVAL(tmp), Z_ARRVAL_P(zarg));
                        }
+                       zval_ptr_dtor(&tmp);
                }
                zend_string_release(json);
        }