| line |
true |
false |
branch |
|
36
|
1024 |
2048 |
if (cp > 0x10FFFF) { |
|
40
|
2048 |
0 |
else if ((cp & 0xF800) == 0xD800) { |
|
63
|
3728 |
2622 |
while (len-- > 0) { |
|
67
|
1106 |
2622 |
if (len) { |
|
69
|
0 |
1106 |
if (d == dstop) { |
|
77
|
287 |
2335 |
if (fatal) |
|
91
|
1 |
1 |
: "Can't decode ill-formed UTF-8 octet sequence <%s>"; |
|
93
|
2 |
2 |
while (n-- > 0) { |
|
97
|
0 |
2 |
if (n) |
|
118
|
0 |
21 |
PUSHMARK(SP); |
|
119
|
0 |
21 |
EXTEND(SP, 2); |
|
129
|
0 |
21 |
if (count != 1) |
|
134
|
9 |
12 |
if (SvUTF8(str)) |
|
140
|
21 |
0 |
FREETMPS; |
|
151
|
2339 |
1604 |
(void)SvUPGRADE(dsv, SVt_PV); |
|
152
|
3941 |
2 |
(void)SvGROW(dsv, off + 1); |
|
|
2339 |
1602 |
(void)SvGROW(dsv, off + 1); |
|
163
|
2335 |
2578 |
if (do_warn) { |
|
169
|
16 |
2562 |
if (fallback) { |
|
181
|
1608 |
970 |
if (off == len) { |
|
185
|
970 |
0 |
} while (len); |
|
199
|
3361 |
2 |
(void)SvUPGRADE(dsv, SVt_PV); |
|
200
|
3363 |
0 |
(void)SvGROW(dsv, off + 1); |
|
|
3361 |
2 |
(void)SvGROW(dsv, off + 1); |
|
210
|
287 |
3080 |
if (skip == (STRLEN) -1) { |
|
212
|
286 |
1 |
if (UTF8_IS_START(*src)) { |
|
214
|
272 |
14 |
if (n > len) |
|
216
|
579 |
286 |
while (skip < n && UTF8_IS_CONTINUATION(src[skip])) |
|
|
579 |
0 |
while (skip < n && UTF8_IS_CONTINUATION(src[skip])) |
|
221
|
3072 |
8 |
if (do_warn) |
|
226
|
5 |
3 |
if (fallback) { |
|
228
|
0 |
5 |
UV usv = (v <= 0x10FFFF && (v & 0xF800) != 0xD800) ? v : 0; |
|
|
0 |
0 |
UV usv = (v <= 0x10FFFF && (v & 0xF800) != 0xD800) ? v : 0; |
|
239
|
4 |
4 |
if (off == len) { |
|
243
|
4 |
0 |
} while (len); |
|
252
|
12 |
2 |
if (append) |
|
255
|
2 |
12 |
(void)SvUPGRADE(dsv, SVt_PV); |
|
256
|
14 |
0 |
(void)SvGROW(dsv, off + len * 2 + 1); |
|
|
2 |
12 |
(void)SvGROW(dsv, off + len * 2 + 1); |
|
259
|
34 |
14 |
for (; src < end; src++) { |
|
261
|
23 |
11 |
if (c < 0x80) |
|
278
|
0 |
0 |
while (p < e && *p < 0x80) |
|
|
0 |
0 |
while (p < e && *p < 0x80) |
|
281
|
0 |
0 |
if (p != e) { |
|
287
|
0 |
0 |
while (p < e) |
|
290
|
0 |
0 |
if (SvLEN(sv) < size + 1) { |
|
297
|
0 |
0 |
for (s += off, e--; e >= s; e--) { |
|
299
|
0 |
0 |
if (c < 0x80) |
|
316
|
3 |
0 |
(void)SvUPGRADE(dsv, SVt_PV); |
|
317
|
3 |
0 |
(void)SvGROW(dsv, len + 1); |
|
|
3 |
0 |
(void)SvGROW(dsv, len + 1); |
|
320
|
26 |
2 |
while (s < e) { |
|
322
|
14 |
12 |
if (c < 0x80) |
|
325
|
1 |
11 |
if ((c & 0xFE) != 0xC2) |
|
329
|
0 |
11 |
if ((c & 0xC0) != 0x80) |
|
334
|
1 |
1 |
if (s < e + 1) { |
|
335
|
1 |
0 |
if (*s < 0x80) |
|
366
|
0 |
4289 |
reuse_sv = SvPV_stealable(octets); |
|
|
0 |
0 |
reuse_sv = SvPV_stealable(octets); |
|
|
0 |
0 |
reuse_sv = SvPV_stealable(octets); |
|
|
0 |
0 |
reuse_sv = SvPV_stealable(octets); |
|
367
|
3 |
4286 |
if (SvUTF8(octets)) { |
|
368
|
3 |
0 |
if (!reuse_sv) { |
|
373
|
0 |
2 |
if (SvCUR(octets) == len) { |
|
380
|
345 |
3943 |
if (utf8_check_ascii((const char *)src, len, &off)) { |
|
381
|
2 |
343 |
if (reuse_sv) { |
|
387
|
343 |
0 |
dXSTARG; |
|
390
|
0 |
343 |
PUSHTARG; |
|
394
|
3943 |
0 |
dXSTARG; |
|
397
|
0 |
1608 |
PUSHTARG; |
|
410
|
0 |
3707 |
reuse_sv = SvPV_stealable(string); |
|
|
0 |
0 |
reuse_sv = SvPV_stealable(string); |
|
|
0 |
0 |
reuse_sv = SvPV_stealable(string); |
|
|
0 |
0 |
reuse_sv = SvPV_stealable(string); |
|
411
|
2 |
3705 |
if (!SvUTF8(string)) { |
|
412
|
0 |
2 |
if (reuse_sv) { |
|
418
|
2 |
0 |
dXSTARG; |
|
420
|
0 |
2 |
SvTAINT(TARG); |
|
|
0 |
0 |
SvTAINT(TARG); |
|
421
|
0 |
2 |
PUSHTARG; |
|
426
|
342 |
3363 |
if (utf8_check_ascii((const char *)src, len, &off)) { |
|
427
|
0 |
342 |
if (reuse_sv) { |
|
433
|
342 |
0 |
dXSTARG; |
|
436
|
0 |
342 |
PUSHTARG; |
|
440
|
3363 |
0 |
dXSTARG; |
|
442
|
0 |
4 |
PUSHTARG; |
|
465
|
1 |
15 |
if (length < 0) |
|
468
|
13 |
2 |
if (!SvOK(bufsv)) |
|
473
|
2 |
13 |
if (offset != 0) { |
|
476
|
0 |
2 |
if (offset < 0) { |
|
478
|
0 |
0 |
if (back > chars) |
|
482
|
1 |
1 |
else if ((size_t)offset == chars) { |
|
485
|
0 |
1 |
else if ((size_t)offset < chars) { |
|
496
|
15 |
0 |
buf = SvGROW(bufsv, base + (STRLEN)length * 4 + 1); |
|
|
5 |
10 |
buf = SvGROW(bufsv, base + (STRLEN)length * 4 + 1); |
|
499
|
1 |
14 |
if (pad) { |
|
507
|
29 |
8 |
while (got < (size_t)length) { |
|
511
|
29 |
0 |
if (count < 0 || (count == 0 && PerlIO_error(fh))) |
|
|
7 |
22 |
if (count < 0 || (count == 0 && PerlIO_error(fh))) |
|
|
0 |
7 |
if (count < 0 || (count == 0 && PerlIO_error(fh))) |
|
524
|
29 |
4 |
if (r.status == UTF8_VALID_STREAM_ILLFORMED || |
|
525
|
1 |
28 |
r.status == UTF8_VALID_STREAM_TRUNCATED) { |
|
530
|
2 |
3 |
if (ckWARN_d(WARN_UTF8)) |
|
533
|
5 |
0 |
if (delta) { // make room, then write FFFD |
|
543
|
1 |
4 |
if (r.status == UTF8_VALID_STREAM_TRUNCATED) |
|
557
|
7 |
22 |
if (eof) |
|
564
|
0 |
15 |
SvSETMAGIC(bufsv); |
|
565
|
3 |
12 |
RETVAL = (IV)got; |
|
578
|
2 |
2674 |
if (SvUTF8(octets)) { |
|
580
|
1 |
1 |
if (!sv_utf8_downgrade(octets, TRUE)) |
|
584
|
340 |
2335 |
ST(0) = boolSV(utf8_valid_ascii(src, len)); |