line |
true |
false |
branch |
66
|
0 |
23 |
PUSHMARK(SP); |
72
|
23 |
0 |
if (count > 0) |
76
|
23 |
0 |
FREETMPS; |
94
|
23 |
0 |
if (!fatal) |
109
|
2491 |
210 |
for (i = 0; i < len; ++i) |
110
|
6 |
2485 |
if (!UTF8_IS_INVARIANT(str[i])) |
121
|
698 |
363 |
if (!nomg) |
122
|
66 |
632 |
SvGETMAGIC(scalar); |
|
0 |
66 |
SvGETMAGIC(scalar); |
124
|
280 |
781 |
if (!SvOK(scalar)) |
|
280 |
0 |
if (!SvOK(scalar)) |
|
280 |
0 |
if (!SvOK(scalar)) |
127
|
667 |
114 |
string = SvPV_nomg(scalar, *len); |
150
|
231 |
550 |
if (utf8 && !SvUTF8(scalar) && string_needs_utf8_upgrade(string, *len)) { |
|
216 |
15 |
if (utf8 && !SvUTF8(scalar) && string_needs_utf8_upgrade(string, *len)) { |
|
6 |
210 |
if (utf8 && !SvUTF8(scalar) && string_needs_utf8_upgrade(string, *len)) { |
157
|
0 |
6 |
return SvPVutf8(scalar, *len); |
169
|
4 |
331 |
if (!string) { |
185
|
0 |
584 |
if (!hv_exists(hash, key, klen)) |
189
|
0 |
584 |
if (!scalar_ptr) |
200
|
0 |
292 |
if (!scalar) |
203
|
275 |
17 |
if (!*taint && SvTAINTED(scalar)) |
|
37 |
238 |
if (!*taint && SvTAINTED(scalar)) |
|
8 |
29 |
if (!*taint && SvTAINTED(scalar)) |
216
|
228 |
72 |
if (value) |
221
|
5 |
295 |
if (utf8 && value) |
|
5 |
0 |
if (utf8 && value) |
224
|
5 |
295 |
if (taint) |
225
|
5 |
0 |
SvTAINTED_on(scalar); |
238
|
29 |
0 |
if (gv) |
241
|
0 |
29 |
if (!class) |
244
|
0 |
29 |
if (!class) |
247
|
0 |
29 |
if (!class) |
261
|
0 |
14 |
if (class_len == 0) { |
267
|
0 |
14 |
if (!class) |
275
|
14 |
29 |
if (scalar) |
288
|
8 |
157 |
if (!sv_isobject(object)) |
294
|
0 |
157 |
PUSHMARK(SP); |
295
|
0 |
157 |
EXTEND(SP, 2); |
297
|
0 |
157 |
XPUSHs(sv_2mortal(newSVsv(object))); |
298
|
0 |
157 |
XPUSHs(sv_2mortal(newSVsv(class))); |
306
|
157 |
0 |
if (count > 0) { |
308
|
157 |
0 |
ret = SvTRUE(sv); |
|
0 |
157 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
157 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
157 |
0 |
ret = SvTRUE(sv); |
|
157 |
0 |
ret = SvTRUE(sv); |
|
157 |
0 |
ret = SvTRUE(sv); |
|
150 |
7 |
ret = SvTRUE(sv); |
|
150 |
0 |
ret = SvTRUE(sv); |
|
150 |
7 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
|
0 |
0 |
ret = SvTRUE(sv); |
314
|
157 |
0 |
FREETMPS; |
324
|
14 |
0 |
if (len < 10 || buffer[0]) |
|
0 |
14 |
if (len < 10 || buffer[0]) |
327
|
0 |
14 |
if (len+10+1+10 < sizeof(message)) { |
332
|
14 |
0 |
if (index2 == -1) { |
339
|
0 |
0 |
if (index1 == -1) |
356
|
66 |
88 |
object_ptr = av_fetch(array, (index2 == -1 ? 0 : index2), 0); |
357
|
0 |
154 |
if (!object_ptr) { |
358
|
0 |
0 |
if (warn) { |
366
|
8 |
146 |
if (!is_class_object(aTHX_ class, object)) { |
367
|
4 |
4 |
if (warn) { |
369
|
4 |
0 |
carp(CARP_WARN, "%s is not %s object", buffer, SvPV_nolen(class)); |
375
|
0 |
146 |
if (SvTYPE(scalar) != SVt_PVHV) { |
376
|
0 |
0 |
if (warn) { |
401
|
4 |
73 |
if (!hash) |
410
|
50 |
23 |
if (name && string_contains_nul(name, name_len)) { |
|
1 |
49 |
if (name && string_contains_nul(name, name_len)) { |
415
|
68 |
5 |
if (mailbox && string_contains_nul(mailbox, mailbox_len)) { |
|
1 |
67 |
if (mailbox && string_contains_nul(mailbox, mailbox_len)) { |
420
|
68 |
5 |
if (domain && string_contains_nul(domain, domain_len)) { |
|
1 |
67 |
if (domain && string_contains_nul(domain, domain_len)) { |
425
|
19 |
54 |
if (comment && string_contains_nul(comment, comment_len)) { |
|
1 |
18 |
if (comment && string_contains_nul(comment, comment_len)) { |
430
|
68 |
5 |
if (mailbox && !mailbox[0]) |
|
1 |
67 |
if (mailbox && !mailbox[0]) |
433
|
68 |
5 |
if (domain && !domain[0]) |
|
1 |
67 |
if (domain && !domain[0]) |
436
|
6 |
67 |
if (!mailbox && !domain) { |
|
6 |
0 |
if (!mailbox && !domain) { |
442
|
0 |
67 |
if (!mailbox) { |
448
|
0 |
67 |
if (!domain) { |
465
|
142 |
0 |
if (scalar && !SvROK(scalar)) { |
|
4 |
138 |
if (scalar && !SvROK(scalar)) { |
466
|
2 |
2 |
if (warn) |
473
|
138 |
0 |
if (!scalar_ref || SvTYPE(scalar_ref) != SVt_PVAV) { |
|
0 |
138 |
if (!scalar_ref || SvTYPE(scalar_ref) != SVt_PVAV) { |
474
|
0 |
0 |
if (warn) |
492
|
69 |
2 |
len = array ? (av_len(array) + 1) : 0; |
494
|
58 |
13 |
if (index1 == -1 && group_name) |
|
10 |
48 |
if (index1 == -1 && group_name) |
497
|
20 |
51 |
if (group_name && string_contains_nul(group_name, group_len)) |
|
0 |
20 |
if (group_name && string_contains_nul(group_name, group_len)) |
500
|
20 |
51 |
if (group_name) |
503
|
77 |
71 |
for (index2 = 0; index2 < len; ++index2) |
504
|
52 |
25 |
message_address_add_from_perl_array(aTHX_ first_address, last_address, utf8, taint, array, index1, ((index1 == -1 && len == 1) ? -1 : index2), class); |
|
8 |
44 |
message_address_add_from_perl_array(aTHX_ first_address, last_address, utf8, taint, array, index1, ((index1 == -1 && len == 1) ? -1 : index2), class); |
506
|
20 |
51 |
if (group_name) |
509
|
63 |
8 |
if (!*taint && SvTAINTED(scalar_group)) |
|
5 |
58 |
if (!*taint && SvTAINTED(scalar_group)) |
|
0 |
5 |
if (!*taint && SvTAINTED(scalar_group)) |
531
|
1 |
70 |
if (SvUTF8(scalar_group)) |
534
|
58 |
13 |
if (index1 == -1 && group_name) |
|
10 |
48 |
if (index1 == -1 && group_name) |
538
|
69 |
2 |
len = array ? (av_len(array) + 1) : 0; |
540
|
77 |
71 |
for (index2 = 0; index2 < len; ++index2) { |
541
|
52 |
25 |
hash = get_object_hash_from_perl_array(aTHX_ array, index1, ((index1 == -1 && len == 1) ? -1 : index2), class, true); |
|
8 |
44 |
hash = get_object_hash_from_perl_array(aTHX_ array, index1, ((index1 == -1 && len == 1) ? -1 : index2), class, true); |
542
|
4 |
73 |
if (!hash) |
544
|
292 |
73 |
for (hash_key_ptr = hash_keys; *hash_key_ptr; ++hash_key_ptr) { |
546
|
292 |
0 |
if (scalar && get_perl_scalar_value(aTHX_ scalar, &len_na, false, false) && SvUTF8(scalar)) |
|
205 |
87 |
if (scalar && get_perl_scalar_value(aTHX_ scalar, &len_na, false, false) && SvUTF8(scalar)) |
|
14 |
191 |
if (scalar && get_perl_scalar_value(aTHX_ scalar, &len_na, false, false) && SvUTF8(scalar)) |
564
|
78 |
41 |
for (address = first_address; address; address = address->next) { |
565
|
18 |
60 |
if (!address->domain) |
567
|
19 |
59 |
if (in_group) |
583
|
41 |
40 |
if (!*address) |
588
|
9 |
31 |
if (in_group && (*address)->mailbox) |
|
9 |
0 |
if (in_group && (*address)->mailbox) |
593
|
1 |
39 |
if (utf8 && in_group && (*address)->mailbox) |
|
1 |
0 |
if (utf8 && in_group && (*address)->mailbox) |
|
1 |
0 |
if (utf8 && in_group && (*address)->mailbox) |
596
|
1 |
39 |
if (taint) |
597
|
1 |
0 |
SvTAINTED_on(*group_scalar); |
602
|
9 |
31 |
if (in_group) |
605
|
71 |
29 |
while (*address && (*address)->domain) { |
|
60 |
11 |
while (*address && (*address)->domain) { |
609
|
60 |
0 |
set_perl_hash_value(aTHX_ hash, "user", ( (*address)->mailbox && (*address)->mailbox[0] ) ? (*address)->mailbox : NULL, utf8, taint); |
|
57 |
3 |
set_perl_hash_value(aTHX_ hash, "user", ( (*address)->mailbox && (*address)->mailbox[0] ) ? (*address)->mailbox : NULL, utf8, taint); |
610
|
60 |
0 |
set_perl_hash_value(aTHX_ hash, "host", ( (*address)->domain && (*address)->domain[0] ) ? (*address)->domain : NULL, utf8, taint); |
|
56 |
4 |
set_perl_hash_value(aTHX_ hash, "host", ( (*address)->domain && (*address)->domain[0] ) ? (*address)->domain : NULL, utf8, taint); |
614
|
4 |
56 |
if ((*address)->invalid_syntax) |
625
|
9 |
31 |
if (in_group && *address) |
|
9 |
0 |
if (in_group && *address) |
649
|
1 |
63 |
if (items % 2 == 1) { |
659
|
71 |
63 |
for (i = 0; i < items; i += 2) |
660
|
13 |
58 |
if (perl_group_needs_utf8(aTHX_ ST(i), ST(i+1), (items == 2 ? -1 : i), this_class)) |
|
5 |
66 |
if (perl_group_needs_utf8(aTHX_ ST(i), ST(i+1), (items == 2 ? -1 : i), this_class)) |
665
|
71 |
63 |
for (i = 0; i < items; i += 2) |
666
|
13 |
58 |
message_address_add_from_perl_group(aTHX_ &first_address, &last_address, utf8, &taint, ST(i), ST(i+1), (items == 2 ? -1 : i), this_class); |
671
|
4 |
59 |
if (utf8) |
673
|
8 |
55 |
if (taint) |
674
|
8 |
0 |
SvTAINTED_on(string_scalar); |
675
|
0 |
63 |
EXTEND(SP, 1); |
698
|
43 |
0 |
string_scalar = items >= 1 ? ST(0) : &PL_sv_undef; |
699
|
14 |
29 |
class_scalar = items >= 2 ? ST(1) : NULL; |
702
|
2 |
41 |
taint = SvTAINTED(string_scalar); |
|
1 |
1 |
taint = SvTAINTED(string_scalar); |
704
|
14 |
29 |
if (class_scalar && !sv_derived_from_pvn(class_scalar, this_class_name, this_class_len, SVf_UTF8)) { |
|
2 |
12 |
if (class_scalar && !sv_derived_from_pvn(class_scalar, this_class_name, this_class_len, SVf_UTF8)) { |
705
|
2 |
0 |
class_name = HvNAME(hv_class); |
|
2 |
0 |
class_name = HvNAME(hv_class); |
|
0 |
2 |
class_name = HvNAME(hv_class); |
|
0 |
0 |
class_name = HvNAME(hv_class); |
|
2 |
0 |
class_name = HvNAME(hv_class); |
|
0 |
2 |
class_name = HvNAME(hv_class); |
706
|
2 |
0 |
carp(CARP_WARN, "Class %s is not derived from %s", (class_name ? class_name : "(unknown)"), this_class_name); |
712
|
41 |
0 |
EXTEND(SP, count * 2); |
|
0 |
41 |
EXTEND(SP, count * 2); |
714
|
40 |
41 |
while (get_next_perl_address_group(aTHX_ &address, &group_scalar, &addresses_scalar, hv_class, utf8, taint)) { |
734
|
93 |
0 |
mailbox_scalar = items >= 1 ? ST(0) : &PL_sv_undef; |
735
|
93 |
0 |
domain_scalar = items >= 2 ? ST(1) : &PL_sv_undef; |
738
|
93 |
0 |
utf8 = (SvUTF8(mailbox_scalar) || SvUTF8(domain_scalar)); |
|
0 |
93 |
utf8 = (SvUTF8(mailbox_scalar) || SvUTF8(domain_scalar)); |
739
|
6 |
87 |
taint = (SvTAINTED(mailbox_scalar) || SvTAINTED(domain_scalar)); |
|
0 |
6 |
taint = (SvTAINTED(mailbox_scalar) || SvTAINTED(domain_scalar)); |
|
1 |
86 |
taint = (SvTAINTED(mailbox_scalar) || SvTAINTED(domain_scalar)); |
|
1 |
0 |
taint = (SvTAINTED(mailbox_scalar) || SvTAINTED(domain_scalar)); |
740
|
0 |
93 |
if (string_contains_nul(mailbox, mailbox_len)) |
742
|
0 |
93 |
if (string_contains_nul(domain, domain_len)) |
748
|
0 |
93 |
if (utf8) |
750
|
7 |
86 |
if (taint) |
751
|
7 |
0 |
SvTAINTED_on(string_scalar); |
752
|
0 |
93 |
EXTEND(SP, 1); |
768
|
92 |
0 |
string_scalar = items >= 1 ? ST(0) : &PL_sv_undef; |
771
|
2 |
90 |
taint = SvTAINTED(string_scalar); |
|
2 |
0 |
taint = SvTAINTED(string_scalar); |
774
|
83 |
9 |
mailbox_scalar = mailbox ? sv_2mortal(newSVpv(mailbox, 0)) : sv_newmortal(); |
775
|
83 |
9 |
domain_scalar = domain ? sv_2mortal(newSVpv(domain, 0)) : sv_newmortal(); |
778
|
0 |
92 |
if (utf8) { |
782
|
2 |
90 |
if (taint) { |
783
|
2 |
0 |
SvTAINTED_on(mailbox_scalar); |
784
|
2 |
0 |
SvTAINTED_on(domain_scalar); |
786
|
0 |
92 |
EXTEND(SP, 2); |
793
|
11 |
0 |
SV *class = items >= 1 ? ST(0) : &PL_sv_undef; |
794
|
11 |
0 |
SV *object = items >= 2 ? ST(1) : &PL_sv_undef; |