Branch Coverage

GNU.xs
Criterion Covered Total %
branch 151 336 44.9


line true false branch
75 0 12 if (SvTYPE(sv) == SVt_PVGV) {
78 0 12 if (!SvOK(sv)) {
0 0 if (!SvOK(sv)) {
0 0 if (!SvOK(sv)) {
81 9 3 if (!SvROK(sv)) {
123 3 0 if (type) {
124 0 3 if (sv_isobject(sv)) return type | OBJECT;
135 12 0 if (GvHV(PL_hintgv) && (PL_hints & HINT_LOCALIZE_HH) == HINT_LOCALIZE_HH) {
6 6 if (GvHV(PL_hintgv) && (PL_hints & HINT_LOCALIZE_HH) == HINT_LOCALIZE_HH) {
137 3 3 if (he != NULL) {
139 3 0 if (val != &PL_sv_placeholder) {
140 3 0 return (int)SvIV(val);
162 0 6 bool is_utf8 = DO_UTF8(pattern);
0 0 bool is_utf8 = DO_UTF8(pattern);
179 0 6 if (isDebug) {
188 0 6 if (isDebug) {
197 3 3 if (pattern_type == SCALAR) {
199 0 3 if (isDebug) {
205 1 2 } else if (pattern_type == ARRAYREF) {
210 0 1 if (isDebug) {
214 0 1 if (av_len(av) < 1) {
220 1 0 if (a_pattern == NULL || get_type(aTHX_ (SV *)*a_pattern) != SCALAR) {
0 1 if (a_pattern == NULL || get_type(aTHX_ (SV *)*a_pattern) != SCALAR) {
223 1 0 if (a_syntax == NULL || get_type(aTHX_ (SV *)*a_syntax) != SCALAR) {
0 1 if (a_syntax == NULL || get_type(aTHX_ (SV *)*a_syntax) != SCALAR) {
230 2 0 } else if (pattern_type == HASHREF) {
235 0 2 if (isDebug) {
239 2 0 if (h_pattern == NULL || get_type(aTHX_ (SV *)*h_pattern) != SCALAR) {
0 2 if (h_pattern == NULL || get_type(aTHX_ (SV *)*h_pattern) != SCALAR) {
242 2 0 if (h_syntax == NULL || get_type(aTHX_ (SV *)*h_syntax) != SCALAR) {
0 2 if (h_syntax == NULL || get_type(aTHX_ (SV *)*h_syntax) != SCALAR) {
253 6 0 exp = SvPV(sv_pattern, plen);
261 0 6 if (flags & RXf_SPLIT && plen == 1 && exp[0] == ' ') {
0 0 if (flags & RXf_SPLIT && plen == 1 && exp[0] == ' ') {
0 0 if (flags & RXf_SPLIT && plen == 1 && exp[0] == ' ') {
262 0 0 if (isDebug) {
271 0 6 if (plen == 0) {
272 0 0 if (isDebug) {
281 0 6 if (plen == 1 && exp[0] == '^') {
0 0 if (plen == 1 && exp[0] == '^') {
282 0 0 if (isDebug) {
291 0 6 if (plen == 3 && strnEQ("\\s+", exp, 3)) {
0 0 if (plen == 3 && strnEQ("\\s+", exp, 3)) {
292 0 0 if (isDebug) {
307 3 3 ri->regex.syntax = (sv_syntax != NULL) ? (int)SvUV(sv_syntax) : defaultSyntax;
0 3 ri->regex.syntax = (sv_syntax != NULL) ? (int)SvUV(sv_syntax) : defaultSyntax;
322 0 6 if ((flags & RXf_PMf_MULTILINE) == RXf_PMf_MULTILINE) {
323 0 0 if (isDebug) {
328 0 6 if (isDebug) {
335 0 6 if ((flags & RXf_PMf_SINGLELINE) == RXf_PMf_SINGLELINE) {
336 0 0 if (isDebug) {
341 0 6 if (isDebug) {
348 0 6 if ((flags & RXf_PMf_FOLD) == RXf_PMf_FOLD) {
349 0 0 if (isDebug) {
354 0 6 if (isDebug) {
361 0 6 if ((flags & RXf_PMf_EXTENDED) == RXf_PMf_EXTENDED) {
363 0 0 if (isDebug) {
371 1 5 if ((flags & RXf_PMf_KEEPCOPY) == RXf_PMf_KEEPCOPY) {
372 0 1 if (isDebug) {
376 0 5 if (isDebug) {
401 0 6 if (isDebug) {
406 0 6 if (ri->regex.newline_anchor == 1) {
409 0 6 if ((ri->regex.syntax & RE_DOT_NEWLINE) == RE_DOT_NEWLINE) {
412 1 5 if ((ri->regex.syntax & RE_ICASE) == RE_ICASE) {
430 0 6 if (isDebug) {
435 0 6 if (isDebug) {
441 0 6 if (ret != _REG_NOERROR) {
453 0 6 if (isDebug) {
462 0 6 Newxz(REGEXP_OFFS_GET(r), REGEXP_NPARENS_GET(r) + 1, regexp_paren_pair);
464 0 6 if (isDebug) {
492 0 12 if (isDebug) {
496 12 0 if ((flags & REXEC_COPY_STR) == REXEC_COPY_STR) {
502 12 0 short canCow = SvCANCOW(sv);
12 0 short canCow = SvCANCOW(sv);
12 0 short canCow = SvCANCOW(sv);
0 0 short canCow = SvCANCOW(sv);
0 0 short canCow = SvCANCOW(sv);
509 12 0 if (canCow != 0) {
511 7 5 if ((REGEXP_SAVED_COPY_GET(r) != NULL)
512 7 0 && SvIsCOW(REGEXP_SAVED_COPY_GET(r))
513 7 0 && SvPOKp(REGEXP_SAVED_COPY_GET(r))
514 7 0 && SvIsCOW(sv)
515 7 0 && SvPOKp(sv)
516 7 0 && (SvPVX(sv) == SvPVX(REGEXP_SAVED_COPY_GET(r)))) {
518 0 7 if (isDebug) {
521 0 7 if (RX_MATCH_COPIED(rx)) {
528 0 5 if (isDebug) {
531 0 5 RX_MATCH_COPY_FREE(rx);
0 0 RX_MATCH_COPY_FREE(rx);
0 5 RX_MATCH_COPY_FREE(rx);
538 0 12 if (isDebug) {
633 0 0 if (RX_MATCH_COPIED(rx)) {
634 0 0 if (sublen > REGEXP_SUBLEN_GET(r))
645 0 0 if (isDebug) {
679 0 0 if (REGEXP_SUBOFFSET_GET(r) != 0 && utf8_target != 0) {
0 0 if (REGEXP_SUBOFFSET_GET(r) != 0 && utf8_target != 0) {
695 0 0 if (SvPOKp(sv) && SvPVX(sv) == strbeg)
0 0 if (SvPOKp(sv) && SvPVX(sv) == strbeg)
703 0 0 if (isDebug) {
710 0 0 RX_MATCH_COPY_FREE(rx);
0 0 RX_MATCH_COPY_FREE(rx);
0 0 RX_MATCH_COPY_FREE(rx);
717 0 12 if (isDebug) {
738 10 4 short utf8_target = DO_UTF8(sv) ? 1 : 0;
10 0 short utf8_target = DO_UTF8(sv) ? 1 : 0;
744 0 14 if (isDebug) {
750 0 14 if (isDebug) {
755 0 14 if (rc <= -2) {
757 2 12 } else if (rc == -1) {
758 0 2 if (isDebug) {
765 9 3 RX_MATCH_UTF8_set(rx, utf8_target);
772 25 12 for (i = 0; i < REGEXP_NPARENS_GET(r) + 1; i++) {
773 0 25 if (isDebug) {
783 12 0 if ((flags & REXEC_NOT_FIRST) != REXEC_NOT_FIRST) {
838 12 0 if (regs.start != NULL) {
841 12 0 if (regs.end != NULL) {
845 0 12 if (isDebug) {
877 0 0 if (isDebug) {
899 0 0 if (isDebug) {
919 0 6 if (isDebug) {
924 0 6 if (isDebug) {
928 3 3 if (ri->sv_syntax != NULL) {
929 0 3 if (isDebug) {
935 0 6 if (isDebug) {
940 0 6 if (isDebug) {
945 0 6 if (isDebug) {
965 0 2 if (isDebug) {
972 0 2 if (isDebug) {
1126 0 12 XPUSHs(sv_2mortal(newSViv(PTR2IV(&engine_GNU))));
1132 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_AWK)));
1138 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_ED)));
1144 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_EGREP)));
1150 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_EMACS)));
1156 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_GNU_AWK)));
1162 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_GREP)));
1168 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_POSIX_AWK)));
1174 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_POSIX_BASIC)));
1180 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_POSIX_EGREP)));
1186 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_POSIX_EXTENDED)));
1192 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_POSIX_MINIMAL_BASIC)));
1198 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_POSIX_MINIMAL_EXTENDED)));
1204 0 2 XPUSHs(sv_2mortal(newSViv(RE_SYNTAX_SED)));
1210 0 2 XPUSHs(sv_2mortal(newSViv(RE_BACKSLASH_ESCAPE_IN_LISTS)));
1216 0 2 XPUSHs(sv_2mortal(newSViv(RE_BK_PLUS_QM)));
1222 0 2 XPUSHs(sv_2mortal(newSViv(RE_CHAR_CLASSES)));
1228 0 2 XPUSHs(sv_2mortal(newSViv(RE_CONTEXT_INDEP_ANCHORS)));
1234 0 2 XPUSHs(sv_2mortal(newSViv(RE_CONTEXT_INDEP_OPS)));
1240 0 2 XPUSHs(sv_2mortal(newSViv(RE_CONTEXT_INVALID_OPS)));
1246 0 2 XPUSHs(sv_2mortal(newSViv(RE_DOT_NEWLINE)));
1252 0 2 XPUSHs(sv_2mortal(newSViv(RE_DOT_NOT_NULL)));
1258 0 2 XPUSHs(sv_2mortal(newSViv(RE_HAT_LISTS_NOT_NEWLINE)));
1264 0 2 XPUSHs(sv_2mortal(newSViv(RE_INTERVALS)));
1270 0 2 XPUSHs(sv_2mortal(newSViv(RE_LIMITED_OPS)));
1276 0 2 XPUSHs(sv_2mortal(newSViv(RE_NEWLINE_ALT)));
1282 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_BK_BRACES)));
1288 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_BK_PARENS)));
1294 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_BK_REFS)));
1300 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_BK_VBAR)));
1306 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_EMPTY_RANGES)));
1312 0 2 XPUSHs(sv_2mortal(newSViv(RE_UNMATCHED_RIGHT_PAREN_ORD)));
1318 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_POSIX_BACKTRACKING)));
1324 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_GNU_OPS)));
1330 0 2 XPUSHs(sv_2mortal(newSViv(RE_DEBUG)));
1336 0 2 XPUSHs(sv_2mortal(newSViv(RE_INVALID_INTERVAL_ORD)));
1342 0 2 XPUSHs(sv_2mortal(newSViv(RE_ICASE)));
1348 0 2 XPUSHs(sv_2mortal(newSViv(RE_CARET_ANCHORS_HERE)));
1354 0 2 XPUSHs(sv_2mortal(newSViv(RE_CONTEXT_INVALID_DUP)));
1360 0 2 XPUSHs(sv_2mortal(newSViv(RE_NO_SUB)));