diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2006-10-11 14:19:55 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2006-10-11 14:19:55 +0000 |
commit | a39201675f4c2553f1f213db239723bede78735f (patch) | |
tree | 721c53bb074fcbf8984425a6ddf3293882819583 | |
parent | 9b7ba016184b3d9de814ef0ac00b20856295a47f (diff) | |
download | php-git-a39201675f4c2553f1f213db239723bede78735f.tar.gz |
Catch empty strings right away.
-rw-r--r-- | ext/standard/string.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index 499fcefa7c..7fe1e5ef4e 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -4851,19 +4851,18 @@ PHP_FUNCTION(str_word_count) return; } - if (char_list) { - php_charmask(char_list, char_list_len, ch TSRMLS_CC); - } - - p = str; - e = str + str_len; - switch(type) { case 1: case 2: array_init(return_value); + if (!str_len) { + return; + } break; case 0: + if (!str_len) { + RETURN_LONG(0); + } /* nothing to be done */ break; default: @@ -4871,12 +4870,19 @@ PHP_FUNCTION(str_word_count) RETURN_FALSE; } + if (char_list) { + php_charmask(char_list, char_list_len, ch TSRMLS_CC); + } + + p = str; + e = str + str_len; + /* first character cannot be ' or -, unless explicitly allowed by the user */ if ((*p == '\'' && (!char_list || !ch['\''])) || (*p == '-' && (!char_list || !ch['-']))) { p++; } /* last character cannot be -, unless explicitly allowed by the user */ - if (str_len && *(e - 1) == '-' && (!char_list || !ch['-'])) { + if (*(e - 1) == '-' && (!char_list || !ch['-'])) { e--; } |