diff options
author | Edin Kadribasic <edink@php.net> | 2002-07-15 17:48:54 +0000 |
---|---|---|
committer | Edin Kadribasic <edink@php.net> | 2002-07-15 17:48:54 +0000 |
commit | 50ca75a0f614961fa1b5effc220c116a0bbda616 (patch) | |
tree | 3de762aa0c737a8935cbbb12ac3f5ab25714fffc | |
parent | 11ac4e035c1aafb73240d664eadd21315639c25f (diff) | |
download | php-git-50ca75a0f614961fa1b5effc220c116a0bbda616.tar.gz |
Fix bug #16985 (wrong count of GET/POST variables).
-rw-r--r-- | ext/mbstring/mbstring.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index d0139d8053..1ab727123f 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -1243,18 +1243,21 @@ php_mbstr_encoding_handler(zval *arg, char *res, char *separator TSRMLS_DC) mbfl_string_init_set(&string, MBSTRG(current_language), MBSTRG(current_internal_encoding)); mbfl_string_init_set(&resvar, MBSTRG(current_language), MBSTRG(current_internal_encoding)); mbfl_string_init_set(&resval, MBSTRG(current_language), MBSTRG(current_internal_encoding)); + + if (!res || *res == '\0') { + return; + } /* count the variables contained in the query */ - num = 0; + num = 1; var = res; - n = strlen(res); - while(n > 0) { - if (*var == '=') { - num++; - } - var++; - n--; + n = strlen(separator); + + while (var=strstr(var, separator)) { + num++; + var+=n; } + num *= 2; val_list = (char **)ecalloc(num, sizeof(char *)); len_list = (int *)ecalloc(num, sizeof(int)); |