Branch Coverage

secret_buffer_charset.c
Criterion Covered Total %
branch 135 194 69.5


line true false branch
28 276 0 if (mg->mg_ptr) {
76 202 22 if (cp <= 0x80)
79 16 6 if (cset->unicode_above_7F == SECRET_BUFFER_CHARSET_TESTUNI) {
81 0 16 if (!cset->rx) return false;
151 278 0 if (pos < lim && lim[-1] == '+') {
107 171 if (pos < lim && lim[-1] == '+') {
155 278 0 if (pos >= lim || *pos != '[' || lim[-1] != ']') {
270 8 if (pos >= lim || *pos != '[' || lim[-1] != ']') {
0 270 if (pos >= lim || *pos != '[' || lim[-1] != ']') {
157 2 6 if (pos + 1 == lim && *pos == '.') {
2 0 if (pos + 1 == lim && *pos == '.') {
160 1 1 if (!flag_s) /* all but newline */
169 270 0 if (pos < lim && *pos == '^') {
58 212 if (pos < lim && *pos == '^') {
174 270 0 if (pos < lim && *pos == ']') {
12 258 if (pos < lim && *pos == ']') {
179 811 0 while (pos < lim && *pos != ']') {
559 252 while (pos < lim && *pos != ']') {
184 1 558 if (c >= 0x80)
187 319 239 else if (c == '\\') {
188 0 319 if (pos >= lim) return false;
203 0 0 if (pos + 1 >= lim || !(*pos >= '0' && *pos <= '7'))
0 0 if (pos + 1 >= lim || !(*pos >= '0' && *pos <= '7'))
0 0 if (pos + 1 >= lim || !(*pos >= '0' && *pos <= '7'))
209 62 0 if (pos < lim && *pos >= '0' && *pos <= '7')
3 59 if (pos < lim && *pos >= '0' && *pos <= '7')
2 1 if (pos < lim && *pos >= '0' && *pos <= '7')
211 62 0 if (pos < lim && *pos >= '0' && *pos <= '7')
3 59 if (pos < lim && *pos >= '0' && *pos <= '7')
1 2 if (pos < lim && *pos >= '0' && *pos <= '7')
213 1 61 if (c > 0xFF)
217 0 143 if (pos+1 >= lim) return false;
218 143 0 high= HEXCHAR_TO_INT(pos[0]);
117 26 high= HEXCHAR_TO_INT(pos[0]);
26 0 high= HEXCHAR_TO_INT(pos[0]);
22 4 high= HEXCHAR_TO_INT(pos[0]);
4 0 high= HEXCHAR_TO_INT(pos[0]);
0 4 high= HEXCHAR_TO_INT(pos[0]);
219 143 0 low= HEXCHAR_TO_INT(pos[1]);
16 127 low= HEXCHAR_TO_INT(pos[1]);
127 0 low= HEXCHAR_TO_INT(pos[1]);
127 0 low= HEXCHAR_TO_INT(pos[1]);
0 0 low= HEXCHAR_TO_INT(pos[1]);
0 0 low= HEXCHAR_TO_INT(pos[1]);
220 139 4 if (high < 0 || low < 0) return false;
0 139 if (high < 0 || low < 0) return false;
230 3 236 else if (c == '[' && pos < lim && *pos == ':')
3 0 else if (c == '[' && pos < lim && *pos == ':')
3 0 else if (c == '[' && pos < lim && *pos == ':')
234 186 50 else if ((c == ' ' || c == '\t') && flag_xx)
0 186 else if ((c == ' ' || c == '\t') && flag_xx)
2 48 else if ((c == ' ' || c == '\t') && flag_xx)
237 114 425 if (range_start >= 0) {
238 0 114 if (c < range_start) /* Invalid range */
240 0 114 if (c > 0xFF)
242 2966 114 while (range_start <= c)
246 216 209 else if (pos + 1 < lim && *pos == '-' && pos[1] != ']') {
114 102 else if (pos + 1 < lim && *pos == '-' && pos[1] != ']') {
114 0 else if (pos + 1 < lim && *pos == '-' && pos[1] != ']') {
250 310 1 else if (c < 0xFF) {
254 0 252 if (pos+1 != lim) // regex did not end at ']', give up
257 2 250 if (flag_i) {
259 0 2 if (bitmap[2] | bitmap[3])
267 252 0 if (bitmap[2] || bitmap[3])
12 240 if (bitmap[2] || bitmap[3])
270 57 195 if (negated) {
272 228 57 for (i = 0; i < 4; i++)
274 57 0 if (cset->unicode_above_7F == SECRET_BUFFER_CHARSET_NOUNI)
288 6144 24 for (c= 0; c < 256; c++) {
292 2039 4105 if (result > 0)
306 270 0 return pat_len >= 3 && pattern[0] == '['
307 107 163 && (pattern[pat_len-1] == ']' || (pattern[pat_len-1] == '+' && pattern[pat_len-2] == ']'))
107 0 && (pattern[pat_len-1] == ']' || (pattern[pat_len-1] == '+' && pattern[pat_len-2] == ']'))
0 107 && (pattern[pat_len-1] == ']' || (pattern[pat_len-1] == '+' && pattern[pat_len-2] == ']'))
309 6 2 || (pat_len == 1 || (pat_len == 2 && pattern[1] == '+'))
6 0 || (pat_len == 1 || (pat_len == 2 && pattern[1] == '+'))
0 6 || (pat_len == 1 || (pat_len == 2 && pattern[1] == '+'))
310 0 2 && pattern[0] == '.'
312 270 8 || (pat_len == 2 || (pat_len == 3 && pattern[2] == '+'))
0 6 || (pat_len == 2 || (pat_len == 3 && pattern[2] == '+'))
0 0 || (pat_len == 2 || (pat_len == 3 && pattern[2] == '+'))
0 0 || (pat_len == 2 || (pat_len == 3 && pattern[2] == '+'))
313 6 0 && pattern[0] == '\\' && (
314 5 1 pattern[1] == 'w' || pattern[1] == 'W'
4 1 pattern[1] == 'w' || pattern[1] == 'W'
315 3 1 || pattern[1] == 's' || pattern[1] == 'S'
2 1 || pattern[1] == 's' || pattern[1] == 'S'
316 1 1 || pattern[1] == 'd' || pattern[1] == 'D'
1 0 || pattern[1] == 'd' || pattern[1] == 'D'
328 631 0 if (!qr_ref || !(rx= (REGEXP*)SvRX(qr_ref)))
0 631 if (!qr_ref || !(rx= (REGEXP*)SvRX(qr_ref)))
332 353 278 if (SvMAGICAL(qr_ref)) {
334 353 0 if (mg && mg->mg_ptr) {
353 0 if (mg && mg->mg_ptr) {
341 0 278 if (!regex_is_single_charclass(rx))
348 24 254 if (!parse_simple_charclass(aTHX_ cset, qr_ref)) {
351 96 24 for (i= 0; i < sizeof(cset->bitmap)/sizeof(cset->bitmap[0]); i++)