Branch Coverage

c/xmlwr.c
Criterion Covered Total %
branch 79 94 84.0


line true false branch
14 4 21 if (fuxmlwr_tail) fuxmlwr_tail->next = wr;
21 25 0 if (fuxmlwr_tail == wr) fuxmlwr_tail = wr->next ? wr->next : wr->prev;
0 25 if (fuxmlwr_tail == wr) fuxmlwr_tail = wr->next ? wr->next : wr->prev;
22 0 25 if (wr->next) wr->next->prev = wr->prev;
23 4 21 if (wr->prev) wr->prev->next = wr->next;
24 0 25 if (wr->out.sv) SvREFCNT_dec(wr->out.sv);
30 4 22 if (SvROK(sv) && !SvAMAGIC(sv)) fu_confess("Invalid attempt to output bare reference");
4 0 if (SvROK(sv) && !SvAMAGIC(sv)) fu_confess("Invalid attempt to output bare reference");
2 2 if (SvROK(sv) && !SvAMAGIC(sv)) fu_confess("Invalid attempt to output bare reference");
0 2 if (SvROK(sv) && !SvAMAGIC(sv)) fu_confess("Invalid attempt to output bare reference");
39 33 0 while (str < end) {
41 2 31 if (utf8) {
42 8 2 while (tmp < end) {
44 8 0 if (x == '<' || x == '&' || x == '"') break;
8 0 if (x == '<' || x == '&' || x == '"') break;
8 0 if (x == '<' || x == '&' || x == '"') break;
48 95 22 while (tmp < end) {
50 92 3 if (x == '<' || x == '&' || x == '"' || x >= 0x80) break;
87 5 if (x == '<' || x == '&' || x == '"' || x >= 0x80) break;
86 1 if (x == '<' || x == '&' || x == '"' || x >= 0x80) break;
86 0 if (x == '<' || x == '&' || x == '"' || x >= 0x80) break;
55 24 9 if (tmp == end) return;
72 32 60 return (x|32)-'a' < 26 || x-'0' < 10 || x == '_' || x == ':' || x == '-';
31 1 return (x|32)-'a' < 26 || x-'0' < 10 || x == '_' || x == ':' || x == '-';
31 0 return (x|32)-'a' < 26 || x-'0' < 10 || x == '_' || x == ':' || x == '-';
31 0 return (x|32)-'a' < 26 || x-'0' < 10 || x == '_' || x == ':' || x == '-';
1 30 return (x|32)-'a' < 26 || x-'0' < 10 || x == '_' || x == ':' || x == '-';
80 62 30 while (fuxmlwr_isnamechar(*x)) x++;
81 25 5 if (*x || x == str) fu_confess("Invalid tag or attribute name: '%s'", str);
2 23 if (*x || x == str) fu_confess("Invalid tag or attribute name: '%s'", str);
91 26 1 if (!selfclose && ((argc - offset) & 1) == 0) fu_confess("Invalid number of arguments");
1 25 if (!selfclose && ((argc - offset) & 1) == 0) fu_confess("Invalid number of arguments");
95 29 20 while (offset < argc-1) {
102 2 27 if (!SvPOK(key)) fu_confess("Non-string attribute");
107 13 14 if (keys[0] == '+' && keys[1] == 0) {
13 0 if (keys[0] == '+' && keys[1] == 0) {
108 8 5 if (!SvOK(val)) {
110 4 4 } else if (isopen) {
113 3 1 } else if (lastkey) {
123 1 13 if (isopen) {
128 4 7 if (!SvOK(val)) {
140 9 11 if (isopen) fustr_write_ch(&wr->out, '"');
142 19 1 if (offset < argc) {
148 9 11 if (!SvOK(val)) { // undef
150 6 5 } else if (SvROK(val) && strcmp(sv_reftype(SvRV(val), 0), "CODE") == 0) { // CODE ref
2 4 } else if (SvROK(val) && strcmp(sv_reftype(SvRV(val), 0), "CODE") == 0) { // CODE ref
152 0 2 PUSHMARK(SP);