diff options
-rw-r--r-- | op.c | 4 | ||||
-rw-r--r-- | op.h | 4 |
2 files changed, 5 insertions, 3 deletions
@@ -3740,8 +3740,10 @@ newSVREF(OP *o) o->op_ppaddr = ppaddr[OP_PADSV]; return o; } - else if (o->op_type == OP_THREADSV) + else if (o->op_type == OP_THREADSV && !(o->op_flags & OPpDONE_SVREF)) { + o->op_flags |= OPpDONE_SVREF; return o; + } return newUNOP(OP_RV2SV, 0, scalar(o)); } @@ -131,8 +131,8 @@ typedef U32 PADOFFSET; /* Private for OP_SORT, OP_PRTF, OP_SPRINTF, string cmp'n, and case changers */ #define OPpLOCALE 64 /* Use locale */ -/* Private for OP_SPECIFIC */ -#define OPpPM_NOT_CONST 64 /* Not constant enough for pmruntime */ +/* Private for OP_THREADSV */ +#define OPpDONE_SVREF 64 /* Been through newSVREF once */ struct op { BASEOP |