summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorJan-Pieter Cornet <johnpc@xs4all.nl>1998-03-18 02:24:20 +0100
committerMalcolm Beattie <mbeattie@sable.ox.ac.uk>1998-04-03 11:53:00 +0000
commit51ae5c030790e9d7687dbb390fdaa072649341b3 (patch)
tree70d995ed57c21355d3b8a54d363177f9e6917e15 /sv.c
parentb64b6983ac5158399d45f7db55bc0794e3122323 (diff)
downloadperl-51ae5c030790e9d7687dbb390fdaa072649341b3.tar.gz
Perl 5.005b1t2/perl5.004_63 (resend)
p4raw-id: //depot/perl@869
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sv.c b/sv.c
index 30a4ccfa38..1abc3fdae1 100644
--- a/sv.c
+++ b/sv.c
@@ -335,8 +335,19 @@ do_clean_objs(SV *sv)
static void
do_clean_named_objs(SV *sv)
{
- if (SvTYPE(sv) == SVt_PVGV && GvSV(sv))
- do_clean_objs(GvSV(sv));
+ if (SvTYPE(sv) == SVt_PVGV) {
+ if ( SvOBJECT(GvSV(sv)) ||
+ GvAV(sv) && SvOBJECT(GvAV(sv)) ||
+ GvHV(sv) && SvOBJECT(GvHV(sv)) ||
+ GvIO(sv) && SvOBJECT(GvIO(sv)) ||
+ GvCV(sv) && SvOBJECT(GvCV(sv)) )
+ {
+ DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob object:\n "), sv_dump(sv));)
+ SvREFCNT_dec(sv);
+ }
+ else if (GvSV(sv))
+ do_clean_objs(GvSV(sv));
+ }
}
#endif