X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_params.c;h=b51ab712657cab9e0fff62a8ca3d7ee982f2151c;hp=ced2507aea8e470ebbfe7e7fc0585ab81f97b43e;hb=95433e1b55cd256df3fe3b6240ded359e8ba09a6;hpb=468e8d748d365811af4ce890fd8fc4c1f88cc08a diff --git a/php_http_params.c b/php_http_params.c index ced2507..b51ab71 100644 --- a/php_http_params.c +++ b/php_http_params.c @@ -315,7 +315,7 @@ static inline void sanitize_rfc5987(zval *zv, char **language, zend_bool *latin1 } } -static inline void sanitize_rfc5988(char *str, size_t len, zval *zv TSRMLS_DC) +static inline void sanitize_rfc5988(char *str, size_t len, zval *zv) { zend_string *zs = zend_string_init(str, len, 0); @@ -324,7 +324,7 @@ static inline void sanitize_rfc5988(char *str, size_t len, zval *zv TSRMLS_DC) zend_string_release(zs); } -static inline void prepare_rfc5988(zval *zv TSRMLS_DC) +static inline void prepare_rfc5988(zval *zv) { if (Z_TYPE_P(zv) != IS_STRING) { zval_dtor(zv); @@ -437,7 +437,7 @@ static void merge_param(HashTable *params, zval *zdata, zval **current_param, zv zval tmp; INIT_PZVAL_ARRAY(&tmp, params); fprintf(stderr, "params = "); - zend_print_zval_r(&tmp, 1 TSRMLS_CC); + zend_print_zval_r(&tmp, 1); fprintf(stderr, "\n"); } #endif @@ -488,10 +488,10 @@ static void merge_param(HashTable *params, zval *zdata, zval **current_param, zv while (Z_TYPE_P(zdata_ptr) == IS_ARRAY && (test_ptr = zend_hash_get_current_data(Z_ARRVAL_P(zdata_ptr)))) { if (Z_TYPE_P(test_ptr) == IS_ARRAY) { + zval *tmp_ptr = ptr; + /* now find key in ptr */ if (HASH_KEY_IS_STRING == zend_hash_get_current_key(Z_ARRVAL_P(zdata_ptr), &hkey.key, &hkey.h)) { - zval *tmp_ptr = ptr; - if ((ptr = zend_hash_find(Z_ARRVAL_P(ptr), hkey.key))) { zdata_ptr = test_ptr; } else { @@ -504,10 +504,12 @@ static void merge_param(HashTable *params, zval *zdata, zval **current_param, zv if ((ptr = zend_hash_index_find(Z_ARRVAL_P(ptr), hkey.h))) { zdata_ptr = test_ptr; } else if (hkey.h) { + ptr = tmp_ptr; Z_TRY_ADDREF_P(test_ptr); ptr = zend_hash_index_update(Z_ARRVAL_P(ptr), hkey.h, test_ptr); break; } else { + ptr = tmp_ptr; Z_TRY_ADDREF_P(test_ptr); ptr = zend_hash_next_index_insert(Z_ARRVAL_P(ptr), test_ptr); break; @@ -904,7 +906,6 @@ static void shift_param(php_http_buffer_t *buf, char *key_str, size_t key_len, z shift_arg(buf, key_str, key_len, zvalue, ass, asl, vss, vsl, flags); } } else { - shift_key(buf, key_str, key_len, pss, psl, flags); if (flags & PHP_HTTP_PARAMS_RFC5988) { shift_rfc5988(buf, key_str, key_len, pss, psl, flags); } else { @@ -1112,7 +1113,7 @@ PHP_METHOD(HttpParams, toArray) return; } zparams = zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("params"), 0, &zparams_tmp); - RETURN_ZVAL_FAST(zparams); + RETURN_ZVAL(zparams, 1, 0); } ZEND_BEGIN_ARG_INFO_EX(ai_HttpParams_toString, 0, 0, 0) @@ -1194,7 +1195,7 @@ PHP_METHOD(HttpParams, offsetGet) zparams = zend_read_property(php_http_params_class_entry, getThis(), ZEND_STRL("params"), 0, &zparams_tmp); if (Z_TYPE_P(zparams) == IS_ARRAY && (zparam = zend_symtable_find(Z_ARRVAL_P(zparams), name))) { - RETVAL_ZVAL_FAST(zparam); + RETVAL_ZVAL(zparam, 1, 0); } } @@ -1226,7 +1227,7 @@ PHP_METHOD(HttpParams, offsetSet) zend_string *name; zval zparams_tmp, *zparam, *zparams, *nvalue; - if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Sz", &name, &nvalue)) { + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS(), "Sz", &name, &nvalue)) { return; }