| line | true | false | branch | 
 
| 31 | 0 | 11 | if ( !_check_buf(infile, &buf, 12, WAV_BLOCK_SIZE) ) { | 
 
| 36 | 8 | 3 | if ( !strncmp( (char *)buffer_ptr(&buf), "RIFF", 4 ) ) { | 
 
| 43 | 0 | 8 | if ( strncmp( (char *)buffer_ptr(&buf), "WAVE", 4 ) ) { | 
 
| 55 | 3 | 0 | else if ( !strncmp( (char *)buffer_ptr(&buf), "FORM", 4 ) ) { | 
 
| 65 | 3 | 0 | if ( bptr[0] == 'A' && bptr[1] == 'I' && bptr[2] == 'F' && (bptr[3] == 'F' || bptr[3] == 'C') ) { | 
 
|  | 3 | 0 | if ( bptr[0] == 'A' && bptr[1] == 'I' && bptr[2] == 'F' && (bptr[3] == 'F' || bptr[3] == 'C') ) { | 
 
|  | 3 | 0 | if ( bptr[0] == 'A' && bptr[1] == 'I' && bptr[2] == 'F' && (bptr[3] == 'F' || bptr[3] == 'C') ) { | 
 
|  | 1 | 2 | if ( bptr[0] == 'A' && bptr[1] == 'I' && bptr[2] == 'F' && (bptr[3] == 'F' || bptr[3] == 'C') ) { | 
 
|  | 1 | 0 | if ( bptr[0] == 'A' && bptr[1] == 'I' && bptr[2] == 'F' && (bptr[3] == 'F' || bptr[3] == 'C') ) { | 
 
| 87 | 0 | 11 | if (err) return err; | 
 
| 97 | 29 | 5 | while ( offset < file_size - 8 ) { | 
 
| 102 | 0 | 29 | if ( !_check_buf(infile, buf, 8, WAV_BLOCK_SIZE) ) { | 
 
| 113 | 3 | 26 | if ( chunk_size % 2 ) { | 
 
| 123 | 8 | 21 | if ( !strcmp( chunk_id, "data" ) ) { | 
 
| 130 | 2 | 6 | if ( !my_hv_fetch( info, "song_length_ms" ) ) { | 
 
| 132 | 2 | 0 | if (bitrate != NULL) { | 
 
| 133 | 2 | 0 | my_hv_store( info, "song_length_ms", newSVuv( (chunk_size / (SvIV(*bitrate) / 8.)) * 1000 ) ); | 
 
| 139 | 2 | 6 | if (chunk_size > file_size - offset) { | 
 
| 145 | 4 | 2 | if ( file_size > offset + chunk_size ) { | 
 
| 151 | 20 | 1 | else if ( !strcmp( chunk_id, "id3 " ) || !strcmp( chunk_id, "ID3 " ) || !strcmp( chunk_id, "ID32" ) ) { | 
 
|  | 20 | 0 | else if ( !strcmp( chunk_id, "id3 " ) || !strcmp( chunk_id, "ID3 " ) || !strcmp( chunk_id, "ID32" ) ) { | 
 
|  | 0 | 20 | else if ( !strcmp( chunk_id, "id3 " ) || !strcmp( chunk_id, "ID3 " ) || !strcmp( chunk_id, "ID32" ) ) { | 
 
| 155 | 1 | 0 | if ( | 
 
| 156 | 1 | 0 | (bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && | 
 
|  | 1 | 0 | (bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && | 
 
|  | 1 | 0 | (bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && | 
 
| 157 | 1 | 0 | bptr[3] < 0xff && bptr[4] < 0xff && | 
 
|  | 1 | 0 | bptr[3] < 0xff && bptr[4] < 0xff && | 
 
| 158 | 1 | 0 | bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 | 
 
|  | 1 | 0 | bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 | 
 
|  | 1 | 0 | bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 | 
 
| 170 | 1 | 19 | if (chunk_size > file_size - offset) { | 
 
| 176 | 0 | 19 | if ( !_check_buf(infile, buf, chunk_size, WAV_BLOCK_SIZE) ) { | 
 
| 180 | 8 | 11 | if ( !strcmp( chunk_id, "fmt " ) ) { | 
 
| 183 | 2 | 9 | else if ( !strcmp( chunk_id, "LIST" ) ) { | 
 
| 186 | 3 | 6 | else if ( !strcmp( chunk_id, "PEAK" ) ) { | 
 
| 189 | 6 | 0 | else if ( !strcmp( chunk_id, "fact" ) ) { | 
 
| 192 | 6 | 0 | if ( chunk_size == 4 ) { | 
 
| 195 | 6 | 0 | if (samplerate != NULL) { | 
 
| 198 | 6 | 0 | my_hv_store( info, "song_length_ms", newSVuv( ((uint64_t)num_samples * 1000) / SvIV(*samplerate) ) ); | 
 
| 207 | 0 | 0 | if ( | 
 
| 209 | 0 | 0 | || !strcmp(chunk_id, "otom") // Wavosaur? | 
 
| 210 | 0 | 0 | || !strcmp(chunk_id, "PAD ") // Padding | 
 
| 247 | 3 | 5 | if ( chunk_size > 16 ) { | 
 
| 251 | 3 | 0 | if (extra_len && chunk_size > 18) { | 
 
|  | 2 | 1 | if (extra_len && chunk_size > 18) { | 
 
| 258 | 8 | 0 | if (channels <= 2 && bps == 16) { | 
 
|  | 1 | 7 | if (channels <= 2 && bps == 16) { | 
 
| 259 | 0 | 1 | if (samplerate == 44100 || samplerate == 48000) | 
 
|  | 0 | 0 | if (samplerate == 44100 || samplerate == 48000) | 
 
| 261 | 0 | 0 | else if (samplerate >= 8000 && samplerate <= 32000) | 
 
|  | 0 | 0 | else if (samplerate >= 8000 && samplerate <= 32000) | 
 
| 278 | 0 | 2 | if ( !strcmp( type_id, "adtl" ) ) { | 
 
| 283 | 2 | 0 | else if ( !strcmp( type_id, "INFO" ) ) { | 
 
| 284 | 11 | 2 | while ( pos < chunk_size ) { | 
 
| 299 | 0 | 11 | if ( len > chunk_size - pos ) { | 
 
| 308 | 21 | 0 | while ( len && bptr[len - 1] == '\0' ) { | 
 
|  | 10 | 11 | while ( len && bptr[len - 1] == '\0' ) { | 
 
| 322 | 0 | 11 | if ( (len + nulls) % 2 ) { | 
 
| 341 | 4 | 0 | if ( entry != NULL ) { | 
 
| 342 | 4 | 0 | channels = SvIV(*entry); | 
 
| 348 | 8 | 4 | while ( channels-- ) { | 
 
| 351 | 2 | 6 | my_hv_store( peak, "value", newSVnv( big_endian ? buffer_get_float32(buf) : buffer_get_float32_le(buf) ) ); | 
 
| 352 | 2 | 6 | my_hv_store( peak, "position", newSVuv( big_endian ? buffer_get_int(buf) : buffer_get_int_le(buf) ) ); | 
 
| 365 | 9 | 2 | while ( offset < file_size - 8 ) { | 
 
| 370 | 0 | 9 | if ( !_check_buf(infile, buf, 8, WAV_BLOCK_SIZE) ) { | 
 
| 381 | 0 | 9 | if ( chunk_size % 2 ) { | 
 
| 391 | 3 | 6 | if ( !strcmp( chunk_id, "SSND" ) ) { | 
 
| 394 | 0 | 3 | if ( !_check_buf(infile, buf, 8, WAV_BLOCK_SIZE) ) { | 
 
| 407 | 2 | 1 | if ( file_size > offset + chunk_size ) { | 
 
| 413 | 6 | 0 | else if ( !strcmp( chunk_id, "id3 " ) || !strcmp( chunk_id, "ID3 " ) || !strcmp( chunk_id, "ID32" ) ) { | 
 
|  | 4 | 2 | else if ( !strcmp( chunk_id, "id3 " ) || !strcmp( chunk_id, "ID3 " ) || !strcmp( chunk_id, "ID32" ) ) { | 
 
|  | 0 | 4 | else if ( !strcmp( chunk_id, "id3 " ) || !strcmp( chunk_id, "ID3 " ) || !strcmp( chunk_id, "ID32" ) ) { | 
 
| 417 | 2 | 0 | if ( | 
 
| 418 | 2 | 0 | (bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && | 
 
|  | 2 | 0 | (bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && | 
 
|  | 2 | 0 | (bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && | 
 
| 419 | 2 | 0 | bptr[3] < 0xff && bptr[4] < 0xff && | 
 
|  | 2 | 0 | bptr[3] < 0xff && bptr[4] < 0xff && | 
 
| 420 | 2 | 0 | bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 | 
 
|  | 2 | 0 | bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 | 
 
|  | 2 | 0 | bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 | 
 
| 427 | 1 | 1 | if (chunk_size < 0 || offset + chunk_size > file_size) { | 
 
|  | 1 | 0 | if (chunk_size < 0 || offset + chunk_size > file_size) { | 
 
| 438 | 0 | 4 | if (chunk_size > file_size - offset) { | 
 
| 444 | 0 | 4 | if ( !_check_buf(infile, buf, chunk_size, WAV_BLOCK_SIZE) ) { | 
 
| 448 | 3 | 1 | if ( !strcmp( chunk_id, "COMM" ) ) { | 
 
| 451 | 1 | 0 | else if ( !strcmp( chunk_id, "PEAK" ) ) { | 
 
| 480 | 1 | 2 | if (chunk_size > 18) { | 
 
| 490 | 3 | 0 | if (channels <= 2 && bits_per_sample == 16) { | 
 
|  | 2 | 1 | if (channels <= 2 && bits_per_sample == 16) { | 
 
| 491 | 0 | 2 | if (samplerate == 44100 || samplerate == 48000) | 
 
|  | 0 | 0 | if (samplerate == 44100 || samplerate == 48000) | 
 
| 493 | 0 | 0 | else if (samplerate >= 8000 && samplerate <= 32000) | 
 
|  | 0 | 0 | else if (samplerate >= 8000 && samplerate <= 32000) |