$? needs upgrade to PVLV when COMPLEX_STATUS is defined.
Craig A. Berry [Thu, 21 May 2009 17:07:26 +0000 (12:07 -0500)]
mg.c

diff --git a/mg.c b/mg.c
index 2147407..c6f483e 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -977,6 +977,7 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
        {
            sv_setiv(sv, (IV)STATUS_CURRENT);
 #ifdef COMPLEX_STATUS
+           SvUPGRADE(sv, SVt_PVLV);
            LvTARGOFF(sv) = PL_statusvalue;
            LvTARGLEN(sv) = PL_statusvalue_vms;
 #endif
@@ -2557,6 +2558,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
     case '?':
 #ifdef COMPLEX_STATUS
        if (PL_localizing == 2) {
+           SvUPGRADE(sv, SVt_PVLV);
            PL_statusvalue = LvTARGOFF(sv);
            PL_statusvalue_vms = LvTARGLEN(sv);
        }