summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/Storable/Storable.xs5
-rw-r--r--sv.h2
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);
}
diff --git a/sv.h b/sv.h
index bc03bb8a15..229690ce61 100644
--- a/sv.h
+++ b/sv.h
@@ -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