--- libmad-0.15.1b/layer3.c.p5 2019-02-03 13:58:35.023647274 +0200 +++ libmad-0.15.1b/layer3.c 2019-02-03 14:08:31.057323240 +0200 @@ -2710,8 +2710,11 @@ } } else { - unsigned char * start = *stream->main_data + stream->md_len - si.main_data_begin; - mad_bit_w_len_init(&ptr, start, stream->bufend - start); + memmove(*stream->main_data, + *stream->main_data + stream->md_len - si.main_data_begin, + si.main_data_begin); + stream->md_len = si.main_data_begin; + mad_bit_w_len_init(&ptr, *stream->main_data, stream->bufend - *stream->main_data - si.main_data_begin); if (md_len > si.main_data_begin) { assert(stream->md_len + md_len -