line |
true |
false |
branch |
26
|
0 |
40 |
if( visited_p >= visited_capacity ){ |
28
|
0 |
0 |
Renew(visited, visited_capacity, SV*); |
35
|
182 |
26 |
for(unsigned char * str_end=str+len; str!=str_end; ++str){ |
36
|
0 |
182 |
if( *str < 0x20 ){ |
37
|
0 |
0 |
switch( *str ){ |
50
|
3 |
0 |
if( str!=str_begin && *(str-1)=='<' ) |
|
1 |
2 |
if( str!=str_begin && *(str-1)=='<' ) |
60
|
0 |
0 |
if( ch>9 ) |
66
|
0 |
0 |
if( ch<='9' ) |
68
|
0 |
0 |
if( ch<='Z' ) |
76
|
182 |
26 |
for(unsigned char * str_end=str+len; str!=str_end; ++str){ |
77
|
0 |
182 |
if( *str < 0x20 ){ |
110
|
3 |
0 |
if( str!=str_begin && *(str-1)=='<' ) |
|
1 |
2 |
if( str!=str_begin && *(str-1)=='<' ) |
136
|
9 |
1 |
if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' ) |
|
0 |
9 |
if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' ) |
|
0 |
0 |
if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' ) |
|
0 |
0 |
if( str_end - str >= 3 && str[0]==(unsigned char)'\xEF' && str[1]==(unsigned char)'\xBB' && str[2]==(unsigned char)'\xBF' ) |
142
|
53 |
8 |
while( str!=str_end && isSPACE(*str) ) |
|
0 |
53 |
while( str!=str_end && isSPACE(*str) ) |
148
|
2 |
0 |
return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}'; |
|
2 |
0 |
return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}'; |
|
2 |
0 |
return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}'; |
|
0 |
2 |
return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}'; |
|
0 |
0 |
return !isSPACE(ch) && ch!=',' && ch!=':' && ch!=']' && ch!='}'; |
152
|
2 |
0 |
return !isSPACE(ch) && ch!=':'; |
|
2 |
0 |
return !isSPACE(ch) && ch!=':'; |
156
|
0 |
3 |
if( str==str_end ) |
161
|
3 |
0 |
if( *str=='+' || *str=='-' ){ |
|
0 |
3 |
if( *str=='+' || *str=='-' ){ |
166
|
3 |
0 |
if( str!=str_end && isDIGIT(*str) ) |
|
1 |
2 |
if( str!=str_end && isDIGIT(*str) ) |
168
|
4 |
0 |
while( str!=str_end && isDIGIT(*str) ){ |
|
1 |
3 |
while( str!=str_end && isDIGIT(*str) ){ |
172
|
3 |
0 |
if( str!=str_end && *str=='.' ){ |
|
0 |
3 |
if( str!=str_end && *str=='.' ){ |
176
|
3 |
0 |
if( str!=str_end && isDIGIT(*str) ) |
|
0 |
3 |
if( str!=str_end && isDIGIT(*str) ) |
178
|
3 |
0 |
while( str!=str_end && isDIGIT(*str) ){ |
|
0 |
3 |
while( str!=str_end && isDIGIT(*str) ){ |
182
|
2 |
1 |
if( !has_digit ) |
185
|
1 |
0 |
if( str!=str_end && (*str=='e' || *str=='E') ){ |
|
1 |
0 |
if( str!=str_end && (*str=='e' || *str=='E') ){ |
|
0 |
1 |
if( str!=str_end && (*str=='e' || *str=='E') ){ |
188
|
0 |
0 |
if( str!=str_end && (*str=='+' || *str=='-') ){ |
|
0 |
0 |
if( str!=str_end && (*str=='+' || *str=='-') ){ |
|
0 |
0 |
if( str!=str_end && (*str=='+' || *str=='-') ){ |
192
|
0 |
0 |
while( str!=str_end && isDIGIT(*str) ){ |
|
0 |
0 |
while( str!=str_end && isDIGIT(*str) ){ |
202
|
2 |
1 |
if( len<=0 ){ |
207
|
1 |
0 |
if( !*out ){ |
211
|
0 |
0 |
else if( *out_capacity_end - *out < len + 1 ){ |
220
|
1 |
0 |
if( *str=='+' || *str=='-' ){ |
|
0 |
1 |
if( *str=='+' || *str=='-' ){ |
225
|
1 |
1 |
while( len-- ) |
231
|
0 |
4 |
if( str==str_end ) |
233
|
1 |
3 |
if( *str=='"' || *str=='\'' ){ |
|
0 |
1 |
if( *str=='"' || *str=='\'' ){ |
238
|
0 |
28 |
if( str==str_end ) |
240
|
3 |
25 |
if( *str==delimiter ) |
242
|
0 |
25 |
if( *str=='\\' ){ |
248
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
250
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
252
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
254
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
257
|
0 |
0 |
if( d <= 0x7f ) |
259
|
0 |
0 |
else if( d <= 0x7ff ) |
261
|
0 |
0 |
else if( d <= 0xffff ) |
272
|
0 |
0 |
if( *(str-1)==delimiter ) |
286
|
1 |
1 |
while( str!=str_end && is_key(*str) ){ |
|
1 |
0 |
while( str!=str_end && is_key(*str) ){ |
295
|
0 |
7 |
if( str==str_end ) |
297
|
0 |
7 |
if( *str=='"' || *str=='\'' ){ |
|
0 |
0 |
if( *str=='"' || *str=='\'' ){ |
302
|
1 |
88 |
if( str==str_end ) |
304
|
6 |
82 |
if( *str==delimiter ) |
306
|
4 |
78 |
if( *str=='\\' ){ |
312
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
314
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
316
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
318
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
321
|
0 |
0 |
if( d <= 0x7f ) |
323
|
0 |
0 |
else if( d <= 0x7ff ) |
325
|
0 |
0 |
else if( d <= 0xffff ) |
336
|
1 |
1 |
if( *(str-1)==delimiter ) |
354
|
0 |
4 |
if( len==-1 ){ |
359
|
4 |
0 |
if( !*out ){ |
363
|
0 |
0 |
else if( *out_capacity_end - *out < len + 1 ){ |
372
|
1 |
3 |
if( *str=='"' || *str=='\'' ){ |
|
0 |
1 |
if( *str=='"' || *str=='\'' ){ |
376
|
3 |
25 |
if( *str==delimiter ) |
378
|
0 |
25 |
if( *str=='\\' ){ |
384
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
386
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
388
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
390
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
393
|
0 |
0 |
if( d <= 0x7f ) |
395
|
0 |
0 |
else if( d <= 0x7ff ){ |
399
|
0 |
0 |
else if( d <= 0xffff ){ |
435
|
0 |
0 |
if( *(str-1)!=delimiter ) |
445
|
1 |
1 |
while( str!=str_end && is_key(*str) ) |
|
1 |
0 |
while( str!=str_end && is_key(*str) ) |
453
|
1 |
6 |
if( len==-1 ){ |
458
|
6 |
0 |
if( !*out ){ |
462
|
0 |
0 |
else if( *out_capacity_end - *out < len + 1 ){ |
474
|
6 |
75 |
if( *str==delimiter ) |
476
|
4 |
71 |
if( *str=='\\' ){ |
482
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
484
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
486
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
488
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
|
0 |
0 |
if( str!=str_end && isXDIGIT(*str) ) |
491
|
0 |
0 |
if( d <= 0x7f ) |
493
|
0 |
0 |
else if( d <= 0x7ff ){ |
497
|
0 |
0 |
else if( d <= 0xffff ){ |
533
|
1 |
1 |
if( *(str-1)!=delimiter ) |
546
|
0 |
23 |
if( str==str_end ) |
556
|
0 |
10 |
if( str==str_end ) |
558
|
0 |
10 |
if( *str == ']' ) |
563
|
3 |
7 |
if( elem==NULL ) |
568
|
0 |
7 |
if( str==str_end ) |
570
|
4 |
3 |
if( *str == ']' ) |
572
|
3 |
0 |
if( *str==',' ) |
584
|
0 |
4 |
if( str==str_end ){ |
585
|
0 |
0 |
if( key_buffer ) |
589
|
0 |
4 |
if( *str=='}' ){ |
590
|
0 |
0 |
if( key_buffer ) |
595
|
0 |
4 |
if( !key_end ){ |
596
|
0 |
0 |
if( key_buffer ) |
603
|
3 |
1 |
if( *str==':' ) |
605
|
1 |
3 |
if( elem==NULL ){ |
612
|
0 |
3 |
if( str==str_end ){ |
616
|
3 |
0 |
if( *str=='}' ){ |
620
|
0 |
0 |
if( *str==',' ) |
632
|
1 |
6 |
if( !value_end ) |
643
|
5 |
0 |
if( str_end-str==4 || (str_end-str>4 && !is_identity(str[4])) ){ |
|
2 |
3 |
if( str_end-str==4 || (str_end-str>4 && !is_identity(str[4])) ){ |
|
2 |
0 |
if( str_end-str==4 || (str_end-str>4 && !is_identity(str[4])) ){ |
644
|
2 |
0 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
|
0 |
2 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
|
0 |
0 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
|
0 |
0 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
|
0 |
0 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
|
0 |
0 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
|
0 |
0 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
|
0 |
0 |
if( (str[0]=='T' || str[0]=='t') && (str[1]=='R' || str[1]=='r') && (str[2]=='U' || str[2]=='u') && (str[3]=='E' || str[3]=='e') ){ |
648
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
|
2 |
0 |
if( (str[0]=='N' || str[0]=='n') && (str[1]=='U' || str[1]=='u') && (str[2]=='L' || str[2]=='l') && (str[3]=='L' || str[3]=='l') ){ |
653
|
3 |
0 |
if( str_end-str==5 || (str_end-str>5 && !is_identity(str[5])) ){ |
|
0 |
3 |
if( str_end-str==5 || (str_end-str>5 && !is_identity(str[5])) ){ |
|
0 |
0 |
if( str_end-str==5 || (str_end-str>5 && !is_identity(str[5])) ){ |
654
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
|
0 |
0 |
if( (str[0]=='F' || str[0]=='f') && (str[1]=='A' || str[1]=='a') && (str[2]=='L' || str[2]=='l') && (str[3]=='S' || str[3]=='s') && (str[4]=='E' || str[4]=='e') ){ |
662
|
1 |
2 |
if( value_end ){ |
717
|
9 |
0 |
str = (unsigned char*) SvPV(json, len); |
720
|
3 |
6 |
if( str_end != str_adv ){ |
721
|
1 |
2 |
if( warn2die ) |
729
|
1 |
5 |
else if( out==NULL ){ |
730
|
0 |
1 |
if( warn2die ) |
746
|
1 |
0 |
str = (unsigned char*) SvPV(json, len); |
749
|
0 |
1 |
if( str_end != str_adv ){ |
753
|
0 |
1 |
else if( out==NULL ) |
760
|
0 |
1 |
Newx(visited, visited_capacity, SV*); |