fix tests
[m6w6/ext-http] / php_http_querystring.c
index 0aeb4541d081f8290d5b34b2cbf859b9e52958d2..83ce01b9ddbb91322e1acd1fbbf857ff8b6300ac 100644 (file)
@@ -241,7 +241,7 @@ ZEND_RESULT_CODE php_http_querystring_update(zval *qarray, zval *params, zval *o
                        ht = Z_ARRVAL(zv);
                }
 
-               ZEND_HASH_FOREACH_KEY_VAL(ht, key.h, key.key, params_entry)
+               ZEND_HASH_FOREACH_KEY_VAL_IND(ht, key.h, key.key, params_entry)
                {
                        /* only public properties */
                        if (!key.key || *key.key->val) {
@@ -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(&param);
+       array_init_size(&param, 1);
+       /* unset first */
+       ZVAL_NULL(&znull);
+       zend_symtable_update(Z_ARRVAL(param), offset, &znull);
+       php_http_querystring_set(getThis(), &param, 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(), &param, 0);
+       php_http_querystring_set(getThis(), &param, QS_MERGE);
        zval_ptr_dtor(&param);
 }