summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/ByteLoader/bytecode.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/ByteLoader/bytecode.h b/ext/ByteLoader/bytecode.h
index 8ef6d383ee..bd62b2848c 100644
--- a/ext/ByteLoader/bytecode.h
+++ b/ext/ByteLoader/bytecode.h
@@ -172,8 +172,10 @@ typedef char *pvindex;
#define BSET_newsv(sv, arg) \
STMT_START { \
- sv = NEWSV(0,0)); \
- SvUPGRADE(sv, (arg)); \
+ sv = (arg == SVt_PVAV ? (SV*)newAV() : \
+ arg == SVt_PVHV ? (SV*)newHV() : \
+ NEWSV(666,0)); \
+ SvUPGRADE(sv, arg); \
} STMT_END
#define BSET_newsvx(sv, arg) STMT_START { \
BSET_newsv(sv, arg & SVTYPEMASK); \