crossfade: copy chunk.audio_format in !NDEBUG
When the destination chunk was empty in cross_fade_apply(), it had no audio_format attached (an attribute which is only used for assertion in the debug build). cross_fade_apply() should assign it the audio_format of the second chunk (if available), otherwise MPD will crash.
This commit is contained in:
parent
e3b9b57ecd
commit
6352e75910
@ -58,6 +58,10 @@ void cross_fade_apply(struct music_chunk *a, const struct music_chunk *b,
|
||||
{
|
||||
size_t size;
|
||||
|
||||
assert(a != NULL);
|
||||
assert(b != NULL);
|
||||
assert(a->length == 0 || b->length == 0 ||
|
||||
audio_format_equals(&a->audio_format, b->audio_format));
|
||||
assert(current_chunk <= num_chunks);
|
||||
|
||||
if (a->tag == NULL && b->tag != NULL)
|
||||
@ -79,6 +83,12 @@ void cross_fade_apply(struct music_chunk *a, const struct music_chunk *b,
|
||||
there is unmixed rest at the end. Copy it over.
|
||||
The output buffer API guarantees that there is
|
||||
enough room in a->data. */
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (a->length == 0)
|
||||
a->audio_format = b->audio_format;
|
||||
#endif
|
||||
|
||||
memcpy(a->data + a->length,
|
||||
b->data + a->length,
|
||||
b->length - a->length);
|
||||
|
Loading…
Reference in New Issue
Block a user