iliaa Wed Oct 11 14:19:55 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/standard string.c Log: Catch empty strings right away. http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.445.2.14.2.26&r2=1.445.2.14.2.27&diff_format=u Index: php-src/ext/standard/string.c diff -u php-src/ext/standard/string.c:1.445.2.14.2.26 php-src/ext/standard/string.c:1.445.2.14.2.27 --- php-src/ext/standard/string.c:1.445.2.14.2.26 Wed Oct 11 13:15:29 2006 +++ php-src/ext/standard/string.c Wed Oct 11 14:19:55 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: string.c,v 1.445.2.14.2.26 2006/10/11 13:15:29 tony2001 Exp $ */ +/* $Id: string.c,v 1.445.2.14.2.27 2006/10/11 14:19:55 iliaa Exp $ */ /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */ @@ -4851,19 +4851,18 @@ 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 @@ 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--; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php