summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdin Kadribasic <edink@php.net>2002-07-15 17:48:54 +0000
committerEdin Kadribasic <edink@php.net>2002-07-15 17:48:54 +0000
commit50ca75a0f614961fa1b5effc220c116a0bbda616 (patch)
tree3de762aa0c737a8935cbbb12ac3f5ab25714fffc
parent11ac4e035c1aafb73240d664eadd21315639c25f (diff)
downloadphp-git-50ca75a0f614961fa1b5effc220c116a0bbda616.tar.gz
Fix bug #16985 (wrong count of GET/POST variables).
-rw-r--r--ext/mbstring/mbstring.c19
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));