summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2002-05-29 13:21:58 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2002-05-29 13:21:58 +0000
commit87f0b2135fb8ed0f01fabb0bd9eac630ea278e75 (patch)
treeade1d0602fcf39e6ce65669c7add245b8e451a67 /sv.c
parentb0ef04295d6eb384855a3fa2790521ad3437adc1 (diff)
downloadperl-87f0b2135fb8ed0f01fabb0bd9eac630ea278e75.tar.gz
Recover some of the #16845.
p4raw-id: //depot/perl@16858
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sv.c b/sv.c
index 8b707f72da..18fdfc1acf 100644
--- a/sv.c
+++ b/sv.c
@@ -4461,7 +4461,13 @@ Perl_sv_magicext(pTHX_ SV* sv, SV* obj, int how, MGVTBL *vtable,
/* Some magic sontains a reference loop, where the sv and object refer to
each other. To prevent a reference loop that would prevent such
objects being freed, we look for such loops and if we find one we
- avoid incrementing the object refcount. */
+ avoid incrementing the object refcount.
+
+ Note we cannot do this to avoid self-tie loops as intervening RV must
+ have its REFCNT incremented to keep it in existence - instead we could
+ special case them in sv_free() -- NI-S
+
+ */
if (!obj || obj == sv ||
how == PERL_MAGIC_arylen ||
how == PERL_MAGIC_qr ||