missed the new file from #18224
[p5sagit/p5-mst-13.2.git] / mg.c
diff --git a/mg.c b/mg.c
index 25f4585..64f6497 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -872,11 +872,6 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
     case '0':
        break;
 #endif
-#ifdef USE_5005THREADS
-    case '@':
-       sv_setsv(sv, thr->errsv);
-       break;
-#endif /* USE_5005THREADS */
     }
     return 0;
 }
@@ -1851,32 +1846,37 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
        DEBUG_x(dump_all());
        break;
     case '\005':  /* ^E */
-        if (*(mg->mg_ptr+1) == '\0') {
+       if (*(mg->mg_ptr+1) == '\0') {
 #ifdef MACOS_TRADITIONAL
-             gMacPerl_OSErr = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
+           gMacPerl_OSErr = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
 #else
 #  ifdef VMS
-             set_vaxc_errno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+           set_vaxc_errno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
 #  else
 #    ifdef WIN32
-             SetLastError( SvIV(sv) );
+           SetLastError( SvIV(sv) );
 #    else
 #      ifdef OS2
-             os2_setsyserrno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+           os2_setsyserrno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
 #      else
-             /* will anyone ever use this? */
-             SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv), 4);
+           /* will anyone ever use this? */
+           SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv), 4);
 #      endif
 #    endif
 #  endif
 #endif
-        }
-        else if (strEQ(mg->mg_ptr+1, "NCODING")) {
-            if (PL_encoding)
-                sv_setsv(PL_encoding, sv);
-            else
-                PL_encoding = newSVsv(sv);
-        }
+       }
+       else if (strEQ(mg->mg_ptr+1, "NCODING")) {
+           if (PL_encoding)
+               SvREFCNT_dec(PL_encoding);
+           if (SvOK(sv) || SvGMAGICAL(sv)) {
+               PL_encoding = newSVsv(sv);
+           }
+           else {
+               PL_encoding = Nullsv;
+           }
+       }
+       break;
     case '\006':       /* ^F */
        PL_maxsysfd = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
        break;
@@ -2288,30 +2288,10 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
        }
        break;
 #endif
-#ifdef USE_5005THREADS
-    case '@':
-       sv_setsv(thr->errsv, sv);
-       break;
-#endif /* USE_5005THREADS */
     }
     return 0;
 }
 
-#ifdef USE_5005THREADS
-int
-Perl_magic_mutexfree(pTHX_ SV *sv, MAGIC *mg)
-{
-    DEBUG_S(PerlIO_printf(Perl_debug_log,
-                         "0x%"UVxf": magic_mutexfree 0x%"UVxf"\n",
-                         PTR2UV(thr), PTR2UV(sv)));
-    if (MgOWNER(mg))
-       Perl_croak(aTHX_ "panic: magic_mutexfree");
-    MUTEX_DESTROY(MgMUTEXP(mg));
-    COND_DESTROY(MgCONDP(mg));
-    return 0;
-}
-#endif /* USE_5005THREADS */
-
 I32
 Perl_whichsig(pTHX_ char *sig)
 {