Hi,
The strlen()
check on line 4730 of ext/standard/string.c is pointless
because of the length assignment in line 4720. Below is a patch (against
latest 5.2) to remove them.
Regards,
Ron Korving
Index: ext/standard/string.c
RCS file: /repository/php-src/ext/standard/string.c,v
retrieving revision 1.621
diff -u -r1.621 string.c
--- ext/standard/string.c 12 Dec 2006 18:17:56 -0000 1.621
+++ ext/standard/string.c 12 Dec 2006 19:26:40 -0000
@@ -4727,10 +4727,6 @@
wlength = strlen(what);
}
-
if (!length) {
-
length = strlen(str);
-
}
-
php_charmask((unsigned char*)what, wlength, flags TSRMLS_CC);
for (source = str, end = source + length, target = new_str; (c = *source)
|| (source < end); source++) {
This code is a fallback in instances where length is not know, which
is something that may happen. Given that this is an API function I
don't think we can make this change as it may break out-of-php code
that relies on this functionality. I really don't think you'll see
any visible gain by eliminating a if (!length) {} check.
Hi,
The
strlen()
check on line 4730 of ext/standard/string.c is pointless
because of the length assignment in line 4720. Below is a patch
(against
latest 5.2) to remove them.Regards,
Ron Korving
Index: ext/standard/string.c
RCS file: /repository/php-src/ext/standard/string.c,v
retrieving revision 1.621
diff -u -r1.621 string.c
--- ext/standard/string.c 12 Dec 2006 18:17:56 -0000 1.621
+++ ext/standard/string.c 12 Dec 2006 19:26:40 -0000
@@ -4727,10 +4727,6 @@
wlength = strlen(what);
}
if (!length) {
length = strlen(str);
}
php_charmask((unsigned char*)what, wlength, flags TSRMLS_CC);
for (source = str, end = source + length, target = new_str; (c =
*source)
|| (source < end); source++) {--
Ilia Alshanetsky
Nevermind the previous e-mail, I see that strlen()
is already done
inside safe_emalloc(), patch was applied, thanks.
Ilia