Fix for [perl #23287] segfault in untie.
Jarkko Hietaniemi [Tue, 12 Aug 2003 07:59:22 +0000 (07:59 +0000)]
(Well, at least no more coredump.)

p4raw-id: //depot/perl@20630

pp_sys.c
t/op/tie.t

index b240b62..910fb14 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -860,7 +860,7 @@ PP(pp_untie)
     if (SvTYPE(sv) == SVt_PVGV && !(sv = (SV *)GvIOp(sv)))
        RETPUSHYES;
 
-    if ((mg = SvTIED_mg(sv, how))) {
+    if ((mg = SvTIED_mg(sv, how)) && mg->mg_obj) {
        SV *obj = SvRV(mg->mg_obj);
        GV *gv;
        CV *cv = NULL;
index a3b4be2..d73cce1 100755 (executable)
@@ -360,3 +360,10 @@ $s=~ s/\(0x\w+\)//g;
 print $s, "\n";
 EXPECT
 SCALAR SCALAR SCALAR SCALAR
+########
+# [perl #23287] segfault in untie
+sub TIESCALAR { bless $_[1], $_[0] }
+my $var;
+tie $var, 'main', \$var;
+untie $var;
+EXPECT