Perl: check IV by SvIOK

This commit is contained in:
Tokuhiro Matsuno 2009-07-03 18:09:38 +09:00
parent ad7cf12128
commit 34ed3bc9e3

View File

@ -150,13 +150,6 @@ static void _msgpack_pack_sv(enc_t *enc, SV* val) {
case SVt_NULL: case SVt_NULL:
msgpack_pack_nil(enc); msgpack_pack_nil(enc);
break; break;
case SVt_IV:
if (SvIOK_UV(val)) {
msgpack_pack_uint32(enc, SvUV(val));
} else {
PACK_WRAPPER(IVTYPE)(enc, SvIV(val));
}
break;
case SVt_PVNV: case SVt_PVNV:
{ {
STRLEN len = 0; STRLEN len = 0;
@ -215,6 +208,10 @@ static void _msgpack_pack_sv(enc_t *enc, SV* val) {
msgpack_pack_raw(enc, len); msgpack_pack_raw(enc, len);
msgpack_pack_raw_body(enc, cval, len); msgpack_pack_raw_body(enc, cval, len);
return; return;
} else if (SvIOK_UV(val)) {
msgpack_pack_uint32(enc, SvUV(val));
} else if (SvIOK(val)) {
PACK_WRAPPER(IVTYPE)(enc, SvIV(val));
} else { } else {
sv_dump(val); sv_dump(val);
Perl_croak(aTHX_ "msgpack for perl doesn't supported this type: %d\n", SvTYPE(val)); Perl_croak(aTHX_ "msgpack for perl doesn't supported this type: %d\n", SvTYPE(val));