From: Ilia Alshanetsky Date: Wed, 11 Oct 2006 14:19:55 +0000 (+0000) Subject: Catch empty strings right away. X-Git-Tag: php-5.2.0RC6~43 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a39201675f4c2553f1f213db239723bede78735f;p=php Catch empty strings right away. --- 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--; }