diff --git a/mg.c b/mg.c index 1b97569f93aa..98da1f15910c 100644 --- a/mg.c +++ b/mg.c @@ -2899,7 +2899,7 @@ Perl_magic_setlvref(pTHX_ SV *sv, MAGIC *mg) (void)hv_store_ent((HV *)mg->mg_obj, (SV *)mg->mg_ptr, SvREFCNT_inc_simple_NN(SvRV(sv)), 0); } - if (mg->mg_flags & MGf_PERSIST) + if (mg->mg_private & OPpLVREF_ITER) NOOP; /* This sv is in use as an iterator var and will be reused, so we must leave the magic. */ else diff --git a/mg.h b/mg.h index a25641d10c1c..2728a6b22624 100644 --- a/mg.h +++ b/mg.h @@ -40,7 +40,6 @@ struct magic { #define MGf_DUP 0x10 /* has an svt_dup MGVTBL entry */ #define MGf_LOCAL 0x20 /* has an svt_local MGVTBL entry */ #define MGf_BYTES 0x40 /* PERL_MAGIC_regex_global only */ -#define MGf_PERSIST 0x80 /* PERL_MAGIC_lvref only */ #define MgTAINTEDDIR(mg) (mg->mg_flags & MGf_TAINTEDDIR) #define MgTAINTEDDIR_on(mg) (mg->mg_flags |= MGf_TAINTEDDIR) diff --git a/pp.c b/pp.c index b24cd428496b..6e53f9b71129 100644 --- a/pp.c +++ b/pp.c @@ -7598,8 +7598,6 @@ PP_wrapped(pp_lvref, &PL_vtbl_lvref, (char *)elem, elem ? HEf_SVKEY : (I32)ARGTARG); mg->mg_private = PL_op->op_private; - if (PL_op->op_private & OPpLVREF_ITER) - mg->mg_flags |= MGf_PERSIST; if (UNLIKELY(PL_op->op_private & OPpLVAL_INTRO)) { if (elem) { assert(arg);