mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-21 15:51:44 +02:00
works correctly under Perl5.8.x.
Perl5.8.x makes "a" as PVIV in {"a", 0}.
This commit is contained in:
16
perl/pack.c
16
perl/pack.c
@@ -81,14 +81,6 @@ static void _msgpack_pack_sv(enc_t *enc, SV* val) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SVt_PV:
|
|
||||||
{
|
|
||||||
STRLEN len;
|
|
||||||
char * cval = SvPV(val, len);
|
|
||||||
msgpack_pack_raw(enc, len);
|
|
||||||
msgpack_pack_raw_body(enc, cval, len);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SVt_NV:
|
case SVt_NV:
|
||||||
PACK_WRAPPER(NVTYPE)(enc, SvNV(val));
|
PACK_WRAPPER(NVTYPE)(enc, SvNV(val));
|
||||||
break;
|
break;
|
||||||
@@ -126,9 +118,17 @@ static void _msgpack_pack_sv(enc_t *enc, SV* val) {
|
|||||||
_msgpack_pack_sv(enc, SvRV(val));
|
_msgpack_pack_sv(enc, SvRV(val));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
if (SvPOKp(val)) {
|
||||||
|
STRLEN len;
|
||||||
|
char * cval = SvPV(val, len);
|
||||||
|
msgpack_pack_raw(enc, len);
|
||||||
|
msgpack_pack_raw_body(enc, cval, len);
|
||||||
|
return;
|
||||||
|
} 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));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XS(xs_pack) {
|
XS(xs_pack) {
|
||||||
|
Reference in New Issue
Block a user