summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>1998-07-08 03:03:51 -0400
committerGurusamy Sarathy <gsar@cpan.org>1998-07-09 01:06:47 +0000
commit1bd3ad17f2b89c5c7610c541aa9f8fd2ae783e7f (patch)
tree6b1a179318db72e39e95f01053ffc90ac04213f4 /sv.c
parent7b973d54ee9f4af760c175291b3c14ce8a682f33 (diff)
downloadperl-1bd3ad17f2b89c5c7610c541aa9f8fd2ae783e7f.tar.gz
manually apply patch with a dependency on unapplied patch
Message-Id: <199807081103.HAA25145@monk.mps.ohio-state.edu> Subject: [PATCH 5.004_70] make quoted RE embeddable p4raw-id: //depot/perl@1383
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/sv.c b/sv.c
index 60972b4d28..b4621278d3 100644
--- a/sv.c
+++ b/sv.c
@@ -1706,10 +1706,18 @@ sv_2pv(register SV *sv, STRLEN *lp)
== (SVs_OBJECT|SVs_RMG))
&& strEQ(s=HvNAME(SvSTASH(sv)), "Regexp")
&& (mg = mg_find(sv, 'r'))) {
- regexp *re = (regexp *)mg->mg_obj;
-
- *lp = re->prelen;
- return re->precomp;
+ if (!mg->mg_ptr) {
+ regexp *re = (regexp *)mg->mg_obj;
+
+ mg->mg_len = re->prelen + 4;
+ New(616, mg->mg_ptr, mg->mg_len + 1, char);
+ Copy("(?:", mg->mg_ptr, 3, char);
+ Copy(re->precomp, mg->mg_ptr+3, re->prelen, char);
+ mg->mg_ptr[mg->mg_len - 1] = ')';
+ mg->mg_ptr[mg->mg_len] = 0;
+ }
+ *lp = mg->mg_len;
+ return mg->mg_ptr;
}
/* Fall through */
case SVt_NULL: