diff options
-rw-r--r-- | ext/ByteLoader/bytecode.h | 6 |
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); \ |