Yet another [ACGHS]V pointer in the interpreter structure that needs to
Nicholas Clark [Tue, 14 Oct 2008 21:16:05 +0000 (21:16 +0000)]
be reset if its SV is freed. (see change 22688 (30952)).
A real live bug found by Slaven and Andreas whilst smoking maint-5.8.x.
I guess that we should audit the interpreter structure for any others.

p4raw-id: //depot/perl@34479

sv.c

diff --git a/sv.c b/sv.c
index e39a2c9..33aa8ec 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -5485,6 +5485,9 @@ Perl_sv_clear(pTHX_ register SV *const sv)
        cv_undef((CV*)sv);
        goto freescalar;
     case SVt_PVHV:
+       if (PL_last_swash_hv == (HV*)sv) {
+           PL_last_swash_hv = NULL;
+       }
        Perl_hv_kill_backrefs(aTHX_ (HV*)sv);
        hv_undef((HV*)sv);
        break;