Make the code clearer

This commit is contained in:
gfx 2010-09-15 15:27:26 +09:00
parent fe7e7a8d07
commit 4cb6d6995f

View File

@ -37,7 +37,6 @@ get_bool (const char *name) {
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
struct template_context; struct template_context;
typedef struct template_context msgpack_unpack_t; typedef struct template_context msgpack_unpack_t;
@ -166,6 +165,7 @@ STATIC_INLINE int template_callback_array_item(unpack_user* u PERL_UNUSED_DECL,
{ {
dTHX; dTHX;
AV* const a = (AV*)SvRV(*c); AV* const a = (AV*)SvRV(*c);
assert(SvTYPE(a) == SVt_PVAV);
(void)av_store(a, AvFILLp(a) + 1, o); // the same as av_push(a, o) (void)av_store(a, AvFILLp(a) + 1, o); // the same as av_push(a, o)
SvREFCNT_inc_simple_void_NN(o); SvREFCNT_inc_simple_void_NN(o);
return 0; return 0;
@ -182,7 +182,9 @@ STATIC_INLINE int template_callback_map(unpack_user* u PERL_UNUSED_DECL, unsigne
STATIC_INLINE int template_callback_map_item(unpack_user* u PERL_UNUSED_DECL, SV** c, SV* k, SV* v) STATIC_INLINE int template_callback_map_item(unpack_user* u PERL_UNUSED_DECL, SV** c, SV* k, SV* v)
{ {
dTHX; dTHX;
(void)hv_store_ent((HV*)SvRV(*c), k, v, 0); HV* const h = (HV*)SvRV(*c);
assert(SvTYPE(h) == SVt_PVHV);
(void)hv_store_ent(h, k, v, 0);
SvREFCNT_inc_simple_void_NN(v); SvREFCNT_inc_simple_void_NN(v);
return 0; return 0;
} }
@ -321,14 +323,12 @@ XS(xs_unpacker_execute) {
ST(0) = _execute_impl(self, data, off, (size_t)sv_len(data)); ST(0) = _execute_impl(self, data, off, (size_t)sv_len(data));
{ if (!mp->user.incremented) {
SV * d2 = template_data(mp); SV* tmp_obj = template_data(mp);
if (!mp->user.incremented && d2) { SvREFCNT_inc_simple_void_NN(tmp_obj);
SvREFCNT_inc(d2);
mp->user.incremented = true; mp->user.incremented = true;
} }
} }
}
XSRETURN(1); XSRETURN(1);
} }
@ -368,7 +368,7 @@ XS(xs_unpacker_data) {
} }
UNPACKER(ST(0), mp); UNPACKER(ST(0), mp);
ST(0) = sv_mortalcopy(template_data(mp)); ST(0) = template_data(mp);
XSRETURN(1); XSRETURN(1);
} }
@ -380,10 +380,9 @@ XS(xs_unpacker_reset) {
} }
UNPACKER(ST(0), mp); UNPACKER(ST(0), mp);
{
SV * data = template_data(mp); SV* const data = template_data(mp);
SvREFCNT_dec(data); SvREFCNT_dec(data);
}
_reset(ST(0)); _reset(ST(0));
XSRETURN(0); XSRETURN(0);
@ -396,10 +395,9 @@ XS(xs_unpacker_destroy) {
} }
UNPACKER(ST(0), mp); UNPACKER(ST(0), mp);
SV * data = template_data(mp);
if (SvOK(data)) { SV* const data = template_data(mp);
SvREFCNT_dec(data); SvREFCNT_dec(data);
}
Safefree(mp); Safefree(mp);
XSRETURN(0); XSRETURN(0);