Branch Coverage

xsubs/pack.xs
Criterion Covered Total %
branch 113 128 88.2


line true false branch
36 344338 68 if (string == NULL && GIMME_V == G_VOID)
344326 12 if (string == NULL && GIMME_V == G_VOID)
12 344326 if (string == NULL && GIMME_V == G_VOID)
38 8 4 WARN_VOID_CONTEXT;
42 68 344326 if (string != NULL)
44 7 61 SvGETMAGIC(string);
0 7 SvGETMAGIC(string);
46 7 61 if ((SvFLAGS(string) & (SVf_POK|SVp_POK)) == 0)
49 49 12 if (GIMME_V == G_VOID && SvREADONLY(string))
45 16 if (GIMME_V == G_VOID && SvREADONLY(string))
6 39 if (GIMME_V == G_VOID && SvREADONLY(string))
53 344337 44 NEED_PARSE_DATA;
5587 338750 NEED_PARSE_DATA;
55 18 344345 if (!get_member_info(aTHX_ THIS, type, &mi, 0))
58 305983 38362 if (mi.flags)
59 12 305971 WARN_FLAGS(type, mi.flags);
8 4 WARN_FLAGS(type, mi.flags);
61 344296 49 if (string == NULL)
66 71 344225 if (mi.size == 0)
82 49 0 if (GIMME_V == G_VOID)
33 16 if (GIMME_V == G_VOID)
85 29 4 buffer = SvGROW(string, max+1);
0 29 buffer = SvGROW(string, max+1);
97 9 40 if(max > len)
103 344312 33 pk_set_buffer(pack, rv ? rv : string, buffer, mi.size);
105 2 344343 SvGETMAGIC(data);
0 2 SvGETMAGIC(data);
107 344345 89 XCPT_TRY_START
115 89 344256 XCPT_CATCH
117 89 0 if (rv)
120 89 0 XCPT_RETHROW;
0 0 XCPT_RETHROW;
124 49 344207 if (string)
125 7 42 SvSETMAGIC(string);
127 32 344223 if (rv == NULL)
158 381854 14 CHECK_VOID_CONTEXT;
12 381856 CHECK_VOID_CONTEXT;
8 4 CHECK_VOID_CONTEXT;
160 7 381849 SvGETMAGIC(string);
0 7 SvGETMAGIC(string);
162 1 381855 if ((SvFLAGS(string) & (SVf_POK|SVp_POK)) == 0)
165 381811 44 NEED_PARSE_DATA;
16 381795 NEED_PARSE_DATA;
167 12 381825 if (!get_member_info(aTHX_ THIS, type, &mi, 0))
170 306017 75808 if (mi.flags)
171 12 306005 WARN_FLAGS(type, mi.flags);
8 4 WARN_FLAGS(type, mi.flags);
173 381818 7 buf = SvPV(string, len);
175 381823 2 if (GIMME_V == G_SCALAR)
381805 20 if (GIMME_V == G_SCALAR)
177 30 381775 if (mi.size > len)
178 22 8 WARN((aTHX_ "Data too short"));
183 16 4 count = mi.size == 0 ? 1 : len / mi.size;
185 381819 6 if (count > 0)
196 0 381819 Newz(0, sva, count, SV *);
201 381819 101 XCPT_TRY_START
203 381848 381718 for (i = 0; i < count; i++)
214 101 381718 XCPT_CATCH
216 101 101 for (i = 0; i < count; i++)
217 0 101 if (sva[i])
222 101 0 XCPT_RETHROW;
0 0 XCPT_RETHROW;
229 0 381718 EXTEND(SP, count);
231 381747 381718 for (i = 0; i < count; i++)