X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_querystring.c;fp=php_http_querystring.c;h=83ce01b9ddbb91322e1acd1fbbf857ff8b6300ac;hp=bd04f5092f9b233a9a53851f75858d4d668c8362;hb=e438aa9ce944f8c8f175554d9aa66d152a47f780;hpb=0918074fdd8dc347370e8298bd13ba4c78224ba8 diff --git a/php_http_querystring.c b/php_http_querystring.c index bd04f50..83ce01b 100644 --- a/php_http_querystring.c +++ b/php_http_querystring.c @@ -592,16 +592,21 @@ ZEND_END_ARG_INFO(); PHP_METHOD(HttpQueryString, offsetSet) { zend_string *offset; - zval *value, param; + zval *value, param, znull; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Sz", &offset, &value)) { return; } - array_init(¶m); + array_init_size(¶m, 1); + /* unset first */ + ZVAL_NULL(&znull); + zend_symtable_update(Z_ARRVAL(param), offset, &znull); + php_http_querystring_set(getThis(), ¶m, QS_MERGE); + /* then update, else QS_MERGE would merge sub-arrrays */ Z_TRY_ADDREF_P(value); zend_symtable_update(Z_ARRVAL(param), offset, value); - php_http_querystring_set(getThis(), ¶m, 0); + php_http_querystring_set(getThis(), ¶m, QS_MERGE); zval_ptr_dtor(¶m); }