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