diff options
-rw-r--r-- | ext/Storable/Storable.xs | 5 | ||||
-rw-r--r-- | sv.h | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/ext/Storable/Storable.xs b/ext/Storable/Storable.xs index 2efc07ce9f..a8cd003342 100644 --- a/ext/Storable/Storable.xs +++ b/ext/Storable/Storable.xs @@ -4287,9 +4287,8 @@ static SV *retrieve_ref(pTHX_ stcxt_t *cxt, char *cname) */ if (cname) { - /* Do not use sv_upgrade to preserve STASH */ - SvFLAGS(rv) &= ~SVTYPEMASK; - SvFLAGS(rv) |= SVt_RV; + /* No need to do anything, as rv will already be PVMG. */ + assert (SvTYPE(rv) >= SVt_RV); } else { sv_upgrade(rv, SVt_RV); } @@ -742,7 +742,7 @@ and leaves the UTF-8 status as it was. #ifdef DEBUGGING #define SvMAGIC(sv) ((assert(SvTYPE(sv) >= SVt_PVMG)), ((XPVMG*) SvANY(sv))->xmg_magic) -#define SvSTASH(sv) ((XPVMG*) SvANY(sv))->xmg_stash +#define SvSTASH(sv) ((assert(SvTYPE(sv) >= SVt_PVMG)), (XPVMG*) SvANY(sv))->xmg_stash #else #define SvMAGIC(sv) ((XPVMG*) SvANY(sv))->xmg_magic #define SvSTASH(sv) ((XPVMG*) SvANY(sv))->xmg_stash |