iliaa Tue Sep 24 12:34:55 2002 EDT Modified files: /php4/ext/standard reg.c Log: Fixed bug #17957 Index: php4/ext/standard/reg.c diff -u php4/ext/standard/reg.c:1.64 php4/ext/standard/reg.c:1.65 --- php4/ext/standard/reg.c:1.64 Mon Aug 19 16:47:42 2002 +++ php4/ext/standard/reg.c Tue Sep 24 12:34:54 2002 @@ -17,9 +17,10 @@ | Jaakko Hyvätti <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: reg.c,v 1.64 2002/08/19 20:47:42 zeev Exp $ */ +/* $Id: reg.c,v 1.65 2002/09/24 16:34:54 iliaa Exp $ */ #include <stdio.h> +#include <ctype.h> #include "php.h" #include "php_string.h" #include "reg.h" @@ -340,13 +341,10 @@ new_l = strlen(buf) + subs[0].rm_so; /* part before the match */ walk = replace; while (*walk) - if ('\\' == *walk - && '0' <= walk[1] && '9' >= walk[1] - && walk[1] - '0' <= ((char) re.re_nsub) - && subs[walk[1] - '0'].rm_so > -1 - && subs[walk[1] - '0'].rm_eo > -1) { - new_l += subs[walk[1] - '0'].rm_eo - - subs[walk[1] - '0'].rm_so; + if ('\\' == *walk && isdigit(walk[1]) && walk[1] - '0' +<= ((char) re.re_nsub)) { + if (subs[walk[1] - '0'].rm_so > -1 && +subs[walk[1] - '0'].rm_eo > -1) { + new_l += subs[walk[1] - '0'].rm_eo - +subs[walk[1] - '0'].rm_so; + } walk += 2; } else { new_l++; @@ -368,22 +366,19 @@ walkbuf = &buf[tmp + subs[0].rm_so]; walk = replace; while (*walk) - if ('\\' == *walk - && '0' <= walk[1] && '9' >= walk[1] - && walk[1] - '0' <= re.re_nsub - && subs[walk[1] - '0'].rm_so > -1 - && subs[walk[1] - '0'].rm_eo > -1 - /* this next case shouldn't happen. it does. */ - && subs[walk[1] - '0'].rm_so <= subs[walk[1] - '0'].rm_eo) { - tmp = subs[walk[1] - '0'].rm_eo - - subs[walk[1] - '0'].rm_so; - memcpy (walkbuf, - &string[pos + subs[walk[1] - '0'].rm_so], - tmp); - walkbuf += tmp; + if ('\\' == *walk && isdigit(walk[1]) && walk[1] - '0' +<= re.re_nsub) { + if (subs[walk[1] - '0'].rm_so > -1 && +subs[walk[1] - '0'].rm_eo > -1 + /* this next case shouldn't happen. it +does. */ + && subs[walk[1] - '0'].rm_so <= +subs[walk[1] - '0'].rm_eo) { + + tmp = subs[walk[1] - '0'].rm_eo - +subs[walk[1] - '0'].rm_so; + memcpy (walkbuf, &string[pos + +subs[walk[1] - '0'].rm_so], tmp); + walkbuf += tmp; + } walk += 2; - } else + } else { *walkbuf++ = *walk++; + } *walkbuf = '\0'; /* and get ready to keep looking for replacements */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php