X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_url_api.c;h=fe1d834e7d6f58d966950ff11a5ff853f455202f;hp=9068378fcaebb17302cd81504a76139eeb3155dd;hb=0e0def98a4ea4463bf8c21c6f161b2b37aa8c49d;hpb=82e8bfff78f52b0989fb865131461fe61156f507 diff --git a/http_url_api.c b/http_url_api.c index 9068378..fe1d834 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -374,9 +374,7 @@ PHP_HTTP_API STATUS _http_urlencode_hash_ex(HashTable *hash, zend_bool override_ /* {{{ http_urlencode_hash_recursive */ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, const char *arg_sep, size_t arg_sep_len, const char *prefix, size_t prefix_len TSRMLS_DC) { - char *key = NULL; - uint len = 0; - ulong idx = 0; + HashKey key = initHashKey(0); zval **data = NULL; HashPosition pos; @@ -388,7 +386,7 @@ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, c return SUCCESS; } - FOREACH_HASH_KEYLENVAL(pos, ht, key, len, idx, data) { + FOREACH_HASH_KEYVAL(pos, ht, key, data) { char *encoded_key; int encoded_len; phpstr new_prefix; @@ -398,18 +396,17 @@ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, c return FAILURE; } - if (key) { - if (!*key) { + if (key.type == HASH_KEY_IS_STRING) { + if (!*key.str) { /* only public properties */ continue; } - if (len && key[len - 1] == '\0') { - --len; + if (key.len && key.str[key.len - 1] == '\0') { + --key.len; } - encoded_key = php_url_encode(key, len, &encoded_len); - key = NULL; + encoded_key = php_url_encode(key.str, key.len, &encoded_len); } else { - encoded_len = spprintf(&encoded_key, 0, "%ld", idx); + encoded_len = spprintf(&encoded_key, 0, "%ld", key.num); } {