diff --git a/perl/pack.c b/perl/pack.c index b329551b..b1e56778 100644 --- a/perl/pack.c +++ b/perl/pack.c @@ -141,6 +141,9 @@ static void _msgpack_pack_sv(enc_t *enc, SV* val) { if (val==NULL) { msgpack_pack_nil(enc); return; + } else if (SvROK(val)) { + _msgpack_pack_sv(enc, SvRV(val)); + return; } switch (SvTYPE(val)) { @@ -200,9 +203,6 @@ static void _msgpack_pack_sv(enc_t *enc, SV* val) { } } break; - case SVt_RV: - _msgpack_pack_sv(enc, SvRV(val)); - break; default: if (SvPOKp(val)) { STRLEN len;