fix test
[m6w6/ext-http] / php_http_header.c
index 709b85bb3cea22f528bd3b13bb2adaeaa77ec16e..d4f2b510b311e69f3f2bde61fd6825f97ed81748 100644 (file)
@@ -19,13 +19,13 @@ ZEND_RESULT_CODE php_http_header_parse(const char *header, size_t length, HashTa
        php_http_header_parser_state_t rs;
        
        if (!php_http_buffer_from_string_ex(&buf, header, length)) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not allocate buffer");
+               php_error_docref(NULL, E_WARNING, "Could not allocate buffer");
                return FAILURE;
        }
        
-       if (!php_http_header_parser_init(&ctx TSRMLS_CC)) {
+       if (!php_http_header_parser_init(&ctx)) {
                php_http_buffer_dtor(&buf);
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initialize header parser");
+               php_error_docref(NULL, E_WARNING, "Could not initialize header parser");
                return FAILURE;
        }
        
@@ -33,15 +33,10 @@ ZEND_RESULT_CODE php_http_header_parse(const char *header, size_t length, HashTa
        php_http_header_parser_dtor(&ctx);
        php_http_buffer_dtor(&buf);
 
-       if (rs == PHP_HTTP_HEADER_PARSER_STATE_FAILURE) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not parse headers");
-               return FAILURE;
-       }
-       
-       return SUCCESS;
+       return rs == PHP_HTTP_HEADER_PARSER_STATE_FAILURE ? FAILURE : SUCCESS;
 }
 
-void php_http_header_to_callback(HashTable *headers, zend_bool crlf, php_http_pass_format_callback_t cb, void *cb_arg TSRMLS_DC)
+void php_http_header_to_callback(HashTable *headers, zend_bool crlf, php_http_pass_format_callback_t cb, void *cb_arg)
 {
        php_http_arrkey_t key;
        zval *header, *single_header;
@@ -72,20 +67,20 @@ void php_http_header_to_callback(HashTable *headers, zend_bool crlf, php_http_pa
                                        }
                                }
                                ZEND_HASH_FOREACH_END();
-                       }
-               } else {
-                       zend_string *zs = php_http_header_value_to_string(header);
+                       } else {
+                               zend_string *zs = php_http_header_value_to_string(header);
 
-                       cb(cb_arg, crlf ? "%s: %s" PHP_HTTP_CRLF : "%s: %s", key.key->val, zs->val);
-                       zend_string_release(zs);
+                               cb(cb_arg, crlf ? "%s: %s" PHP_HTTP_CRLF : "%s: %s", key.key->val, zs->val);
+                               zend_string_release(zs);
+                       }
                }
        }
        ZEND_HASH_FOREACH_END();
 }
 
-void php_http_header_to_string(php_http_buffer_t *str, HashTable *headers TSRMLS_DC)
+void php_http_header_to_string(php_http_buffer_t *str, HashTable *headers)
 {
-       php_http_header_to_callback(headers, 1, (php_http_pass_format_callback_t) php_http_buffer_appendf, str TSRMLS_CC);
+       php_http_header_to_callback(headers, 1, (php_http_pass_format_callback_t) php_http_buffer_appendf, str);
 }
 
 zend_string *php_http_header_value_array_to_string(zval *header)
@@ -149,13 +144,14 @@ PHP_METHOD(HttpHeader, serialize)
        if (SUCCESS == zend_parse_parameters_none()) {
                php_http_buffer_t buf;
                zend_string *zs;
+               zval name_tmp, value_tmp;
 
                php_http_buffer_init(&buf);
-               zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("name"), 0));
+               zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("name"), 0, &name_tmp));
                php_http_buffer_appendz(&buf, zs);
                zend_string_release(zs);
 
-               zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0));
+               zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0, &value_tmp));
                if (zs->len) {
                        php_http_buffer_appends(&buf, ": ");
                        php_http_buffer_appendz(&buf, zs);
@@ -177,7 +173,7 @@ PHP_METHOD(HttpHeader, unserialize)
        char *serialized_str;
        size_t serialized_len;
 
-       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &serialized_str, &serialized_len)) {
+       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS(), "s", &serialized_str, &serialized_len)) {
                HashTable ht;
 
                zend_hash_init(&ht, 1, NULL, ZVAL_PTR_DTOR, 0);
@@ -187,7 +183,7 @@ PHP_METHOD(HttpHeader, unserialize)
                                zend_ulong idx;
 
                                zend_hash_internal_pointer_reset(&ht);
-                               switch (zend_hash_get_current_key_ex(&ht, &key, &idx, NULL)) {
+                               switch (zend_hash_get_current_key(&ht, &key, &idx)) {
                                        case HASH_KEY_IS_STRING:
                                                zend_update_property_str(php_http_header_class_entry, getThis(), ZEND_STRL("name"), key);
                                                break;
@@ -217,12 +213,13 @@ PHP_METHOD(HttpHeader, match)
        size_t val_len;
        zend_long flags = PHP_HTTP_MATCH_LOOSE;
        zend_string *zs;
+       zval value_tmp;
 
        if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS(), "|sl", &val_str, &val_len, &flags)) {
                return;
        }
 
-       zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0));
+       zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0, &value_tmp));
        RETVAL_BOOL(php_http_match(zs->val, val_str, flags));
        zend_string_release(zs);
 }
@@ -234,7 +231,7 @@ ZEND_END_ARG_INFO();
 PHP_METHOD(HttpHeader, negotiate)
 {
        HashTable *supported, *rs;
-       zval *rs_array = NULL;
+       zval name_tmp, value_tmp, *rs_array = NULL;
        zend_string *zs;
        char *sep_str = NULL;
        size_t sep_len = 0;
@@ -243,11 +240,12 @@ PHP_METHOD(HttpHeader, negotiate)
                return;
        }
        if (rs_array) {
+               ZVAL_DEREF(rs_array);
                zval_dtor(rs_array);
                array_init(rs_array);
        }
 
-       zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("name"), 0));
+       zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("name"), 0, &name_tmp));
        if (zend_string_equals_literal(zs, "Accept")) {
                sep_str = "/";
                sep_len = 1;
@@ -257,7 +255,7 @@ PHP_METHOD(HttpHeader, negotiate)
        }
        zend_string_release(zs);
 
-       zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0));
+       zs = zval_get_string(zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0, &value_tmp));
        if ((rs = php_http_negotiate(zs->val, zs->len, supported, sep_str, sep_len))) {
                PHP_HTTP_DO_NEGOTIATE_HANDLE_RESULT(rs, supported, rs_array);
        } else {
@@ -274,14 +272,14 @@ ZEND_BEGIN_ARG_INFO_EX(ai_HttpHeader_getParams, 0, 0, 0)
 ZEND_END_ARG_INFO();
 PHP_METHOD(HttpHeader, getParams)
 {
-       zval zctor, zparams_obj, *zargs = NULL;
+       zval value_tmp, zctor, zparams_obj, *zargs = NULL;
        
        ZVAL_STRINGL(&zctor, "__construct", lenof("__construct"));
        
        object_init_ex(&zparams_obj, php_http_params_class_entry);
        
        zargs = (zval *) ecalloc(ZEND_NUM_ARGS()+1, sizeof(zval));
-       ZVAL_COPY_VALUE(&zargs[0], zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0));
+       ZVAL_COPY_VALUE(&zargs[0], zend_read_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), 0, &value_tmp));
        if (ZEND_NUM_ARGS()) {
                zend_get_parameters_array(ZEND_NUM_ARGS(), ZEND_NUM_ARGS(), &zargs[1]);
        }
@@ -290,6 +288,7 @@ PHP_METHOD(HttpHeader, getParams)
                RETVAL_ZVAL(&zparams_obj, 0, 1);
        }
        
+       zval_ptr_dtor(&zctor);
        if (zargs) {
                efree(zargs);
        }
@@ -312,7 +311,7 @@ PHP_METHOD(HttpHeader, parse)
                        zval_dtor(return_value);
                        RETURN_FALSE;
                } else {
-                       if (ce && instanceof_function(ce, php_http_header_class_entry TSRMLS_CC)) {
+                       if (ce && instanceof_function(ce, php_http_header_class_entry)) {
                                php_http_arrkey_t key;
                                zval *val;