Skip to content

Commit 0d89278

Browse files
committed
Make WAVE64 fmt chunk padding independent of inner logic
1 parent d028149 commit 0d89278

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/flac/decode.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -890,10 +890,13 @@ FLAC__bool write_iff_headers(FILE *f, DecoderSession *decoder_session, FLAC__uin
890890
if(!write_riff_wave_fmt_chunk_body(f, is_waveformatextensible, preserve_dummy_cbsize, decoder_session->bps, decoder_session->channels, decoder_session->sample_rate, decoder_session->channel_mask))
891891
return false;
892892

893-
if(format == FORMAT_WAVE64 && !is_waveformatextensible && preserve_dummy_cbsize) {
894-
/* fmt block size 18 must be padded with 6 bytes in order to align with 8 byte alignment */
895-
if(flac__utils_fwrite("\x00\x00\x00\x00\x00\x00", 1, 6, f) != 6)
896-
return false;
893+
if(format == FORMAT_WAVE64) {
894+
unsigned padding = ((8 - ftello(f) % 8) % 8);
895+
if(padding > 0) {
896+
/* fmt chunk must be padded in order to align with 8-byte alignment */
897+
if(flac__utils_fwrite("\x00\x00\x00\x00\x00\x00\x00", 1, padding, f) != padding)
898+
return false;
899+
}
897900
}
898901

899902
decoder_session->fm_offset2 = ftello(f);

0 commit comments

Comments
 (0)