Branch Coverage

Replace.xs
Criterion Covered Total %
branch 252 356 70.7


line true false branch
49 5 442 if (*str_size <= needed) {
50 5 5 while (*str_size <= needed) {
53 5 0 SvGROW(sv, *str_size);
5 0 SvGROW(sv, *str_size);
64 864 447 for (j = 0; j < slen - 1; ++j) {
85 286464 1119 for ( ix = 0; ix < 256; ++ix )
88 119667 56 for ( ix = 0; ix <= scan_top; ++ix ) {
90 0 119667 if ( !ary[ix] )
93 118614 1053 if ( SvPOK( entry ) ) {
96 118572 42 if ( slen == 1 ) {
101 1024 29 } else if ( SvIOK( entry ) || SvNOK( entry ) ) {
2 1022 } else if ( SvIOK( entry ) || SvNOK( entry ) ) {
103 28 3 if ( val >= 0 && val <= 255 ) {
25 3 if ( val >= 0 && val <= 255 ) {
109 1021 1 else if ( IS_CODEREF( entry ) ) {
1021 0 else if ( IS_CODEREF( entry ) ) {
124 3 30 if ( len == 0 ) {
126 1 2 PROPAGATE_TAINT(sv, reply);
1 0 PROPAGATE_TAINT(sv, reply);
1 0 PROPAGATE_TAINT(sv, reply);
133 80 6 while ( len > 0 && IS_SPACE( (unsigned char) *str) ) {
34 46 while ( len > 0 && IS_SPACE( (unsigned char) *str) ) {
5 41 while ( len > 0 && IS_SPACE( (unsigned char) *str) ) {
4 37 while ( len > 0 && IS_SPACE( (unsigned char) *str) ) {
5 32 while ( len > 0 && IS_SPACE( (unsigned char) *str) ) {
3 29 while ( len > 0 && IS_SPACE( (unsigned char) *str) ) {
5 24 while ( len > 0 && IS_SPACE( (unsigned char) *str) ) {
139 63 6 while (end > str && IS_SPACE( (unsigned char) *end) ) {
24 39 while (end > str && IS_SPACE( (unsigned char) *end) ) {
3 36 while (end > str && IS_SPACE( (unsigned char) *end) ) {
4 32 while (end > str && IS_SPACE( (unsigned char) *end) ) {
3 29 while (end > str && IS_SPACE( (unsigned char) *end) ) {
3 26 while (end > str && IS_SPACE( (unsigned char) *end) ) {
2 24 while (end > str && IS_SPACE( (unsigned char) *end) ) {
145 4 26 PROPAGATE_TAINT(sv, reply);
4 0 PROPAGATE_TAINT(sv, reply);
4 0 PROPAGATE_TAINT(sv, reply);
169 2 29 if ( len == 0 )
175 76 3 while ( lead < len && IS_SPACE( (unsigned char) str[lead] ) )
36 40 while ( lead < len && IS_SPACE( (unsigned char) str[lead] ) )
4 36 while ( lead < len && IS_SPACE( (unsigned char) str[lead] ) )
3 33 while ( lead < len && IS_SPACE( (unsigned char) str[lead] ) )
4 29 while ( lead < len && IS_SPACE( (unsigned char) str[lead] ) )
3 26 while ( lead < len && IS_SPACE( (unsigned char) str[lead] ) )
0 26 while ( lead < len && IS_SPACE( (unsigned char) str[lead] ) )
179 64 5 while ( end > (str + lead) && IS_SPACE( (unsigned char) *end ) ) {
27 37 while ( end > (str + lead) && IS_SPACE( (unsigned char) *end ) ) {
5 32 while ( end > (str + lead) && IS_SPACE( (unsigned char) *end ) ) {
3 29 while ( end > (str + lead) && IS_SPACE( (unsigned char) *end ) ) {
3 26 while ( end > (str + lead) && IS_SPACE( (unsigned char) *end ) ) {
2 24 while ( end > (str + lead) && IS_SPACE( (unsigned char) *end ) ) {
0 24 while ( end > (str + lead) && IS_SPACE( (unsigned char) *end ) ) {
184 6 23 if ( lead == 0 && trail == 0 )
5 1 if ( lead == 0 && trail == 0 )
188 20 4 if ( trail ) {
194 23 1 if ( lead )
197 1 23 SvSETMAGIC(sv);
216 1103 0 if ( !map || SvTYPE(map) != SVt_RV || SvTYPE(SvRV(map)) != SVt_PVAV
1101 2 if ( !map || SvTYPE(map) != SVt_RV || SvTYPE(SvRV(map)) != SVt_PVAV
1101 0 if ( !map || SvTYPE(map) != SVt_RV || SvTYPE(SvRV(map)) != SVt_PVAV
217 0 1101 || AvFILL( SvRV(map) ) < 0
0 0 || AvFILL( SvRV(map) ) < 0
2 1099 || AvFILL( SvRV(map) ) < 0
221 2 2 PROPAGATE_TAINT(sv, reply);
2 0 PROPAGATE_TAINT(sv, reply);
2 0 PROPAGATE_TAINT(sv, reply);
231 0 1099 map_top = AvFILL(mapav);
242 39 1060 if ( _build_fast_map( fast_map, ary, map_top ) ) {
247 32 7 if ( !is_utf8 ) {
249 918 32 for ( i = 0; i < len; ++i )
257 40 7 for ( i = 0; i < len; ++i, ++out ) {
259 22 18 if ( c >= 0x80 ) {
260 22 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
22 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
21 1 STRLEN seq_len = UTF8_SEQ_LEN(c);
21 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
21 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
262 0 22 if ( i + seq_len > len ) seq_len = len - i;
263 46 22 for ( k = 0; k < seq_len; ++k )
276 7 32 if ( SvUTF8(sv) )
278 3 36 PROPAGATE_TAINT(sv, reply);
3 0 PROPAGATE_TAINT(sv, reply);
3 0 PROPAGATE_TAINT(sv, reply);
292 1610 59 for ( i = 0; i < len; ++i, ++ptr, ++ix_newstr ) {
303 148 1462 if ( is_utf8 && c >= 0x80 ) {
59 89 if ( is_utf8 && c >= 0x80 ) {
304 59 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
59 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
59 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
58 1 STRLEN seq_len = UTF8_SEQ_LEN(c);
58 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
307 0 59 if ( i + seq_len > len ) seq_len = len - i;
310 0 59 if ( str_size <= (ix_newstr + seq_len + 1) ) {
311 0 0 while ( str_size <= (ix_newstr + seq_len + 1) )
313 0 0 SvGROW( reply, str_size );
0 0 SvGROW( reply, str_size );
321 60 59 for ( k = 1; k < seq_len; ++k ) {
330 1551 0 if ( ix > map_top
331 0 1551 || !ary[ix]
336 415 1136 if ( SvPOK( entry ) ) {
339 97 318 if ( slen == 0 ) {
346 1133 3 } else if ( SvIOK( entry ) || SvNOK( entry ) ) {
0 1133 } else if ( SvIOK( entry ) || SvNOK( entry ) ) {
349 3 0 if ( val >= 0 && val <= 255 ) {
3 0 if ( val >= 0 && val <= 255 ) {
353 1133 0 } else if ( IS_CODEREF( entry ) ) {
1133 0 } else if ( IS_CODEREF( entry ) ) {
364 1 1132 if ( is_utf8 )
367 2 1131 if ( SvTAINTED(sv) )
2 0 if ( SvTAINTED(sv) )
368 2 0 SvTAINTED_on( arg );
374 0 1133 PUSHMARK(SP);
375 0 1133 XPUSHs( arg );
382 1133 0 if ( SvTRUE( ERRSV ) ) {
1001 132 if ( SvTRUE( ERRSV ) ) {
387 1001 0 FREETMPS;
390 1001 0 croak_sv( ERRSV );
393 132 0 if ( count == 1 ) {
395 131 1 if ( SvOK( result ) ) {
400 2 129 if ( slen == 0 ) {
411 132 0 FREETMPS;
419 10 49 if ( SvUTF8(sv) )
421 4 55 PROPAGATE_TAINT(sv, reply);
4 0 PROPAGATE_TAINT(sv, reply);
4 0 PROPAGATE_TAINT(sv, reply);
447 22 0 if ( !map || SvTYPE(map) != SVt_RV || SvTYPE(SvRV(map)) != SVt_PVAV
21 1 if ( !map || SvTYPE(map) != SVt_RV || SvTYPE(SvRV(map)) != SVt_PVAV
21 0 if ( !map || SvTYPE(map) != SVt_RV || SvTYPE(SvRV(map)) != SVt_PVAV
448 0 21 || AvFILL( SvRV(map) ) < 0
0 0 || AvFILL( SvRV(map) ) < 0
1 20 || AvFILL( SvRV(map) ) < 0
460 0 20 map_top = AvFILL(mapav);
471 17 3 if ( _build_fast_map( fast_map, ary, map_top ) ) {
472 14 3 if ( !is_utf8 ) {
473 300 14 for ( i = 0; i < len; ++i ) {
475 229 71 if ( str[i] != replacement ) {
481 11 3 for ( i = 0; i < len; ++i ) {
483 3 8 if ( c >= 0x80 ) {
484 3 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
3 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
2 1 STRLEN seq_len = UTF8_SEQ_LEN(c);
1 1 STRLEN seq_len = UTF8_SEQ_LEN(c);
1 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
485 0 3 if ( i + seq_len > len ) seq_len = len - i;
491 5 3 if ( str[i] != replacement ) {
498 14 3 if ( count )
499 1 13 SvSETMAGIC(sv);
505 3 0 for ( i = 0; i < len; ++i ) {
510 0 3 if ( is_utf8 && c >= 0x80 ) {
0 0 if ( is_utf8 && c >= 0x80 ) {
511 0 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
0 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
0 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
0 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
0 0 STRLEN seq_len = UTF8_SEQ_LEN(c);
512 0 0 if ( i + seq_len > len ) seq_len = len - i;
517 3 0 if ( ix > map_top || !ary[ix] )
0 3 if ( ix > map_top || !ary[ix] )
522 2 1 if ( SvPOK( entry ) ) {
525 0 2 if ( slen == 1 ) {
526 0 0 if ( str[i] != replace[0] ) {
534 1 0 } else if ( SvIOK( entry ) || SvNOK( entry ) ) {
0 1 } else if ( SvIOK( entry ) || SvNOK( entry ) ) {
536 0 0 if ( val >= 0 && val <= 255 ) {
0 0 if ( val >= 0 && val <= 255 ) {
537 0 0 if ( str[i] != (char) val ) {
543 1 0 } else if ( IS_CODEREF( entry ) ) {
1 0 } else if ( IS_CODEREF( entry ) ) {
550 0 0 if ( count )
551 0 0 SvSETMAGIC(sv);
562 1106 0 if ( sv && SvPOK(sv) ) {
1103 3 if ( sv && SvPOK(sv) ) {
574 36 0 if ( sv && SvPOK(sv) ) {
33 3 if ( sv && SvPOK(sv) ) {
587 24 0 if ( sv && SvPOK(sv) ) {
22 2 if ( sv && SvPOK(sv) ) {
599 33 0 if ( sv && SvPOK(sv) ) {
31 2 if ( sv && SvPOK(sv) ) {