Change 32758 by [EMAIL PROTECTED] on 2007/12/29 00:17:41
Wrap wrapped and wraplen from struct regexp in macros RW_WRAPPED() and
RX_WRAPLEN() to preserve source compatibility when they get moved
around.
Affected files ...
... //depot/perl/dump.c#288 edit
... //depot/perl/ext/re/re.xs#53 edit
... //depot/perl/regcomp.c#627 edit
... //depot/perl/regexp.h#115 edit
Differences ...
==== //depot/perl/dump.c#288 (text) ====
Index: perl/dump.c
--- perl/dump.c#287~32753~ 2007-12-28 13:25:50.000000000 -0800
+++ perl/dump.c 2007-12-28 16:17:41.000000000 -0800
@@ -1285,7 +1285,8 @@
if (mg->mg_type == PERL_MAGIC_qr) {
const regexp * const re = (regexp *)mg->mg_obj;
SV * const dsv = sv_newmortal();
- const char * const s = pv_pretty(dsv, re->wrapped,
re->wraplen,
+ const char * const s
+ = pv_pretty(dsv, RX_WRAPPED(re), RX_WRAPLEN(re),
60, NULL, NULL,
( PERL_PV_PRETTY_QUOTE | PERL_PV_ESCAPE_RE |
PERL_PV_PRETTY_ELLIPSES |
((re->extflags & RXf_UTF8) ? PERL_PV_ESCAPE_UNI : 0))
==== //depot/perl/ext/re/re.xs#53 (text) ====
Index: perl/ext/re/re.xs
--- perl/ext/re/re.xs#52~32753~ 2007-12-28 13:25:50.000000000 -0800
+++ perl/ext/re/re.xs 2007-12-28 16:17:41.000000000 -0800
@@ -126,7 +126,7 @@
} else {
/* Scalar, so use the string that Perl would return */
/* return the pattern in (?msix:..) format */
- pattern = sv_2mortal(newSVpvn(re->wrapped,re->wraplen));
+ pattern = sv_2mortal(newSVpvn(RX_WRAPPED(re),RX_WRAPLEN(re)));
if (re->extflags & RXf_UTF8)
SvUTF8_on(pattern);
XPUSHs(pattern);
==== //depot/perl/regcomp.c#627 (text) ====
Index: perl/regcomp.c
--- perl/regcomp.c#626~32757~ 2007-12-28 15:17:20.000000000 -0800
+++ perl/regcomp.c 2007-12-28 16:17:41.000000000 -0800
@@ -4289,12 +4289,12 @@
U16 reganch = (U16)((r->extflags & RXf_PMf_STD_PMMOD) >> 12);
const char *fptr = STD_PAT_MODS; /*"msix"*/
char *p;
- r->wraplen = plen + has_minus + has_p + has_runon
+ RX_WRAPLEN(r) = plen + has_minus + has_p + has_runon
+ (sizeof(STD_PAT_MODS) - 1)
+ (sizeof("(?:)") - 1);
- Newx(r->wrapped, r->wraplen + 1, char );
- p = r->wrapped;
+ Newx(RX_WRAPPED(r), RX_WRAPLEN(r) + 1, char );
+ p = RX_WRAPPED(r);
*p++='('; *p++='?';
if (has_p)
*p++ = KEEPCOPY_PAT_MOD; /*'p'*/
@@ -4318,8 +4318,8 @@
*p++ = ':';
Copy(RExC_precomp, p, plen, char);
- assert ((r->wrapped - p) < 16);
- r->pre_prefix = p - r->wrapped;
+ assert ((RX_WRAPPED(r) - p) < 16);
+ r->pre_prefix = p - RX_WRAPPED(r);
p += plen;
if (has_runon)
*p++ = '\n';
@@ -9146,7 +9146,7 @@
CALLREGFREE_PVT(r); /* free the private data */
if (r->paren_names)
SvREFCNT_dec(r->paren_names);
- Safefree(r->wrapped);
+ Safefree(RX_WRAPPED(r));
}
if (r->substrs) {
if (r->anchored_substr)
@@ -9419,7 +9419,7 @@
}
}
- ret->wrapped = SAVEPVN(ret->wrapped, ret->wraplen+1);
+ RX_WRAPPED(ret) = SAVEPVN(RX_WRAPPED(ret), RX_WRAPLEN(ret)+1);
ret->paren_names = hv_dup_inc(ret->paren_names, param);
if (ret->pprivate)
@@ -9587,8 +9587,8 @@
if (flags)
*flags = ((re->extflags & RXf_UTF8) ? 1 : 0);
if (lp)
- *lp = re->wraplen;
- return re->wrapped;
+ *lp = RX_WRAPLEN(re);
+ return RX_WRAPPED(re);
}
/*
==== //depot/perl/regexp.h#115 (text) ====
Index: perl/regexp.h
--- perl/regexp.h#114~32757~ 2007-12-28 15:17:20.000000000 -0800
+++ perl/regexp.h 2007-12-28 16:17:41.000000000 -0800
@@ -358,6 +358,9 @@
writers? Specifically, the value 1 assumes that the wrapped version always
has exactly one character at the end, a ')'. Will that always be true? */
#define RX_PRELEN(prog) ((prog)->wraplen -
(prog)->pre_prefix - 1)
+#define RX_WRAPPED(prog) ((prog)->wrapped)
+#define RX_WRAPLEN(prog) ((prog)->wraplen)
+
#endif /* PLUGGABLE_RE_EXTENSION */
End of Patch.