From: Remi Collet Date: Wed, 18 Mar 2015 07:12:31 +0000 (+0100) Subject: Merge branch 'master' of git.php.net:/pecl/http/pecl_http X-Git-Tag: RELEASE_2_4_1~2 X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=commitdiff_plain;h=45f663fa52f52017f9f8943e1eb1a4961e8abb53;hp=094de7776c8b16e23d95aefa1ea6e614fb99538f Merge branch 'master' of git.php.net:/pecl/http/pecl_http * 'master' of git.php.net:/pecl/http/pecl_http: release 2.4.0 it is always bad to rely on external things back to dev release 2.3.2 fis querystring offset set bug fis querystring offset set bug this test requires online --- diff --git a/package.xml b/package.xml index 40a7227..bdf3b89 100644 --- a/package.xml +++ b/package.xml @@ -35,18 +35,18 @@ http://dev.iworks.at/ext-http/lcov/ext/http/ mike@php.net yes - 2015-03-01 + 2015-03-18 - 2.4.0dev + 2.4.0 2.4.0 - beta - beta + stable + stable BSD, revised diff --git a/php_http.h b/php_http.h index baacd4b..02326fb 100644 --- a/php_http.h +++ b/php_http.h @@ -13,7 +13,7 @@ #ifndef PHP_EXT_HTTP_H #define PHP_EXT_HTTP_H -#define PHP_PECL_HTTP_VERSION "2.4.0dev" +#define PHP_PECL_HTTP_VERSION "2.4.0" extern zend_module_entry http_module_entry; #define phpext_http_ptr &http_module_entry diff --git a/php_http_querystring.c b/php_http_querystring.c index 15a000b..d265748 100644 --- a/php_http_querystring.c +++ b/php_http_querystring.c @@ -606,11 +606,19 @@ PHP_METHOD(HttpQueryString, offsetSet) return; } - MAKE_STD_ZVAL(param); - array_init(param); - Z_ADDREF_P(value); - add_assoc_zval_ex(param, offset_str, offset_len + 1, value); - php_http_querystring_set(getThis(), param, 0 TSRMLS_CC); + param = zend_read_property(php_http_querystring_class_entry, getThis(), ZEND_STRL("queryArray"), 0 TSRMLS_CC); + + if (Z_TYPE_P(param) == IS_ARRAY && zend_symtable_exists(Z_ARRVAL_P(param), offset_str, offset_len + 1)) { + Z_ADDREF_P(value); + zend_symtable_update(Z_ARRVAL_P(param), offset_str, offset_len + 1, (void *) &value, sizeof(zval *), NULL); + Z_ADDREF_P(param); + } else { + MAKE_STD_ZVAL(param); + array_init(param); + Z_ADDREF_P(value); + add_assoc_zval_ex(param, offset_str, offset_len + 1, value); + } + php_http_querystring_set(getThis(), param, QS_MERGE TSRMLS_CC); zval_ptr_dtor(¶m); } diff --git a/tests/bug66388.phpt b/tests/bug66388.phpt index 9f9c95e..e4cbf2a 100644 --- a/tests/bug66388.phpt +++ b/tests/bug66388.phpt @@ -27,7 +27,7 @@ echo $client->send()->getResponse()->getResponseCode(); ?> ===DONE=== ---EXPECT-- +--EXPECTF-- Test -401 +40%d ===DONE=== diff --git a/tests/querystring003.phpt b/tests/querystring003.phpt new file mode 100644 index 0000000..a504174 --- /dev/null +++ b/tests/querystring003.phpt @@ -0,0 +1,22 @@ +--TEST-- +querystring offset set +--SKIPIF-- + +--FILE-- + +===DONE=== +--EXPECT-- +Test +foo=bar&bar=baz +foo=baz&bar=baz +===DONE===