From: Craig A. Berry Date: Sat, 16 Jan 2010 22:31:01 +0000 (-0600) Subject: Correct VMS-specific handling of $! in Perl_magic_get. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=666d8aa22e6926f5d5320cb2c48d6641485e576e;p=p5sagit%2Fp5-mst-13.2.git Correct VMS-specific handling of $! in Perl_magic_get. 0097b436152452e403cc71b4f1a1cfd30ec0ba1a had introduced a test failure on VMS because it only set the POK flag in the non-VMS code path, which was an easy mistake to make because accumulated patches had over time made the #ifdef jungle way more tangled than it needed to be. There is really only one line that needs to be VMS-specific. --- diff --git a/mg.c b/mg.c index ddfc2ff..1728752 100644 --- a/mg.c +++ b/mg.c @@ -1035,13 +1035,13 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg) sv_copypv(sv, PL_ors_sv); break; case '!': + { + dSAVE_ERRNO; #ifdef VMS sv_setnv(sv, (NV)((errno == EVMSERR) ? vaxc$errno : errno)); - sv_setpv(sv, errno ? Strerror(errno) : ""); #else - { - dSAVE_ERRNO; sv_setnv(sv, (NV)errno); +#endif #ifdef OS2 if (errno == errno_isOS2 || errno == errno_isOS2_set) sv_setpv(sv, os2error(Perl_rc)); @@ -1051,7 +1051,7 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg) SvPOK_on(sv); /* may have got removed during taint processing */ RESTORE_ERRNO; } -#endif + SvRTRIM(sv); SvNOK_on(sv); /* what a wonderful hack! */ break;