| line | true | false | branch | 
 
| 96 | 23 | 58 | if (n <= 1) /* termination condition */ | 
 
| 114 | 31 | 27 | if (loc[n] < n) { | 
 
| 121 | 31 | 27 | for (i = n - 1; i >= 1; i--) | 
 
| 145 | 0 | 46314 | Copy(array, copy, len, SV*); | 
 
| 147 | 40375 | 5939 | if (calling) | 
 
| 151 | 363146 | 46309 | if (calling) { | 
 
| 158 | 363141 | 46312 | if (index != 0) { | 
 
| 163 | 363141 | 46312 | } while (index-- > 0); | 
 
| 184 | 30 | 5 | for (x = c->len; x >= 0; x--) free(c->tmparea[x]); | 
 
| 186 | 1 | 4 | if (c->copy) { | 
 
| 187 | 5 | 1 | for (x = 0; x < c->len; x++) SvREFCNT_dec(c->copy[x]); | 
 
| 201 | 1 | 5 | if ((n = av_len(av) + 1) == 0) | 
 
| 206 | 0 | 5 | if (c == NULL) { | 
 
| 234 | 0 | 4 | if (RETVAL == NULL) { | 
 
| 240 | 0 | 4 | if ((n = av_len(av) + 1) == 0) | 
 
| 247 | 3 | 1 | if (items > 2) { | 
 
| 248 | 0 | 3 | r = SvUV(ST(2)); | 
 
| 249 | 0 | 3 | if (r > n) { | 
 
| 253 | 3 | 0 | if (r < n) { | 
 
| 262 | 0 | 4 | if ((RETVAL->items = (SV**) safemalloc(sizeof(SV*) * (num + 1))) == NULL) | 
 
| 277 | 0 | 4 | if (RETVAL->p == NULL) | 
 
| 280 | 0 | 4 | if (RETVAL->loc == NULL) | 
 
| 285 | 9 | 4 | for (i = 1; i <= num; i++) { | 
 
| 286 | 6 | 3 | if (has_combination) { | 
 
| 309 | 3 | 1 | if (has_combination) { | 
 
| 310 | 0 | 3 | if(!reset_combination(RETVAL, av, r)) { | 
 
| 327 | 5 | 54 | if (self->is_done) { /* done permutation for all combination */ | 
 
| 328 | 3 | 2 | if (self->c) { | 
 
| 335 | 0 | 54 | EXTEND(sp, self->num); | 
 
| 345 | 120 | 54 | for (i = 1; i <= self->num; i++) { | 
 
| 352 | 23 | 31 | if (self->is_done && self->c) { /* permutation done */ | 
 
|  | 21 | 2 | if (self->is_done && self->c) { /* permutation done */ | 
 
| 365 | 42 | 21 | for (i = 1; i <= self->num; i++) { | 
 
| 398 | 9 | 4 | for (i = 1; i <= self->num; i++) { /* leakproof! */ | 
 
| 415 | 1 | 13 | if (self->is_done) | 
 
| 417 | 0 | 13 | EXTEND(sp, self->num); | 
 
| 425 | 27 | 13 | for (i = 1; i <= self->num; i++) | 
 
| 453 | 7 | 3 | for (i = 1; i <= self->num; i++) { | 
 
| 477 | 6 | 0 | if (!SvROK(callback_sv) || SvTYPE(SvRV(callback_sv)) != SVt_PVCV) | 
 
|  | 0 | 6 | if (!SvROK(callback_sv) || SvTYPE(SvRV(callback_sv)) != SVt_PVCV) | 
 
| 479 | 6 | 0 | if (!SvROK(array_sv)    || SvTYPE(SvRV(array_sv))    != SVt_PVAV) | 
 
|  | 0 | 6 | if (!SvROK(array_sv)    || SvTYPE(SvRV(array_sv))    != SVt_PVAV) | 
 
| 490 | 0 | 6 | if (SvREADONLY(c->array)) | 
 
| 493 | 1 | 5 | if (c->len == 0) { | 
 
| 504 | 1 | 4 | if (SvRMAGICAL(c->array)) { | 
 
| 506 | 5 | 1 | for (x = 0; x < c->len; x++) { | 
 
| 508 | 5 | 0 | c->copy[x] = (svp) ? SvREFCNT_inc(*svp) : &PL_sv_undef; | 
 
| 521 | 30 | 5 | for (x = c->len; x >= 0; x--) | 
 
| 526 | 0 | 5 | PUSH_MULTICALL(callback); | 
 
|  | 0 | 5 | PUSH_MULTICALL(callback); | 
 
| 530 | 4 | 0 | POP_MULTICALL; | 
 
|  | 0 | 4 | POP_MULTICALL; |