- create another copy of the header zval
[m6w6/ext-http] / http_request_api.c
index 85144807f1b6a9e489eb2c7b9d9cbad529059c1b..260b1f4a89fa065f02a674fc0bf2c4e11d9ffbeb 100644 (file)
@@ -471,12 +471,16 @@ PHP_HTTP_API STATUS _http_request_prepare(http_request *request, HashTable *opti
                                zval **header_val;
                                if (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_P(zoption), (void **) &header_val, &pos)) {
                                        char header[1024] = {0};
+                                       zval val;
                                        
-                                       SEPARATE_ZVAL(header_val);
-                                       convert_to_string(*header_val);
+                                       val = **header_val;
+                                       zval_copy_ctor(&val);
+                                       INIT_PZVAL(&val);
+                                       convert_to_string(&val);
                                        
-                                       snprintf(header, 1023, "%s: %s", header_key, Z_STRVAL_PP(header_val));
+                                       snprintf(header, 1023, "%s: %s", header_key, Z_STRVAL(val));
                                        request->_cache.headers = curl_slist_append(request->_cache.headers, header);
+                                       zval_dtor(&val);
                                }
 
                                /* reset */