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 30 3 buffer = SvGROW(string, max+1);
0 30 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 96 XCPT_TRY_START
115 96 344249 XCPT_CATCH
117 96 0 if (rv)
120 96 0 XCPT_RETHROW;
0 0 XCPT_RETHROW;
124 49 344200 if (string)
125 7 42 SvSETMAGIC(string);
127 32 344216 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 100 XCPT_TRY_START
203 381848 381719 for (i = 0; i < count; i++)
214 100 381719 XCPT_CATCH
216 100 100 for (i = 0; i < count; i++)
217 0 100 if (sva[i])
222 100 0 XCPT_RETHROW;
0 0 XCPT_RETHROW;
229 0 381719 EXTEND(SP, count);
231 381748 381719 for (i = 0; i < count; i++)