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