summaryrefslogtreecommitdiff
path: root/op.h
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2002-03-21 20:19:31 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2002-03-21 20:19:31 +0000
commitdd7d6c2b9820b80b8bc1446051bad2f6e173499a (patch)
tree4634b80ac82f42d07301aaf4c58abd3700b4b7f5 /op.h
parentd503bed0ad10125976d438fa47e4b223f7cdb98c (diff)
downloadperl-dd7d6c2b9820b80b8bc1446051bad2f6e173499a.tar.gz
It seems that the strange failure (core dump) of
t/uni/fold.t on ithreads Solaris builds is a gcc bug: (1) using Sun's cc helps (2) rewriting the ithreads PM_SETRE() to do the setting in two steps helps (3) no other platforms have the crash (4) Tru64's Third Degree sees nothing evil So we implement (2). p4raw-id: //depot/perl@15400
Diffstat (limited to 'op.h')
-rw-r--r--op.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/op.h b/op.h
index 5c6a78ff4c..69e7ddfd4d 100644
--- a/op.h
+++ b/op.h
@@ -263,7 +263,7 @@ struct pmop {
#ifdef USE_ITHREADS
#define PM_GETRE(o) (INT2PTR(REGEXP*,SvIVX(PL_regex_pad[(o)->op_pmoffset])))
-#define PM_SETRE(o,r) (sv_setiv(PL_regex_pad[(o)->op_pmoffset], PTR2IV(r)))
+#define PM_SETRE(o,r) STMT_START { SV* sv = PL_regex_pad[(o)->op_pmoffset]; sv_setiv(sv, PTR2IV(r)); } STMT_END
#define PM_GETRE_SAFE(o) (PL_regex_pad ? PM_GETRE(o) : (REGEXP*)0)
#define PM_SETRE_SAFE(o,r) if (PL_regex_pad) PM_SETRE(o,r)
#else