patch: remove unneeded strlen() check from php_addcslashes

php.internals

Ron Korving

19 years ago
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 A.

19 years ago
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. On 12-Dec-06, at 2:31 PM, Ron Korving wrote:
> 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++) { > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >
Ilia Alshanetsky

Ilia A.

19 years ago
Nevermind the previous e-mail, I see that strlen() is already done inside safe_emalloc(), patch was applied, thanks. Ilia