fix message parser content length
[m6w6/ext-http] / php_http_message_parser.c
index 2438fc13e31aaa427a88d0e21403e565c7568d2c..e4eab11f94addea20d0f8ba1a69812ee641036b5 100644 (file)
@@ -256,7 +256,7 @@ php_http_message_parser_state_t php_http_message_parser_parse(php_http_message_p
                                }
                                if ((h_cl = php_http_message_header(*message, ZEND_STRL("Content-Length")))) {
                                        Z_TRY_ADDREF_P(h_cl);
-                                       zend_hash_str_update(&(*message)->hdrs, "X-Original-Content-Length", lenof("X-Original-Content-Length"), h_cl);
+                                       h_cl = zend_hash_str_update(&(*message)->hdrs, "X-Original-Content-Length", lenof("X-Original-Content-Length"), h_cl);
                                }
                                if ((h_cr = php_http_message_header(*message, ZEND_STRL("Content-Range")))) {
                                        Z_TRY_ADDREF_P(h_cr);
@@ -578,7 +578,9 @@ static PHP_METHOD(HttpMessageParser, parse)
        php_http_buffer_append(&parser_obj->buffer, data_str, data_len);
        RETVAL_LONG(php_http_message_parser_parse(parser_obj->parser, &parser_obj->buffer, flags, &parser_obj->parser->message));
 
+       ZVAL_DEREF(zmsg);
        zval_dtor(zmsg);
+       ZVAL_NULL(zmsg);
        if (parser_obj->parser->message) {
                php_http_message_t *msg_cpy = php_http_message_copy(parser_obj->parser->message, NULL);
                php_http_message_object_t *msg_obj = php_http_message_object_new_ex(php_http_message_class_entry, msg_cpy);
@@ -608,7 +610,9 @@ static PHP_METHOD(HttpMessageParser, stream)
        parser_obj = PHP_HTTP_OBJ(NULL, getThis());
        RETVAL_LONG(php_http_message_parser_parse_stream(parser_obj->parser, &parser_obj->buffer, s, flags, &parser_obj->parser->message));
 
+       ZVAL_DEREF(zmsg);
        zval_dtor(zmsg);
+       ZVAL_NULL(zmsg);
        if (parser_obj->parser->message) {
                php_http_message_t *msg_cpy = php_http_message_copy(parser_obj->parser->message, NULL);
                php_http_message_object_t *msg_obj = php_http_message_object_new_ex(php_http_message_class_entry, msg_cpy);