From 1b8df15b7888b6a476f71a8d6906330eb7751ffd Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Fri, 29 May 2020 00:45:03 +0900 Subject: [PATCH] speex: Fix crash on Windows caused by cross-CRT issue Use speex_header_free() to free memory which was allocated by library. Cross-CRT issue should not happen on 1.17 Cerbero build but might happen custom build or so. Part-of: --- ext/speex/gstspeexdec.c | 2 +- ext/speex/gstspeexenc.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ext/speex/gstspeexdec.c b/ext/speex/gstspeexdec.c index ca2dfdb..3c29ec7 100644 --- a/ext/speex/gstspeexdec.c +++ b/ext/speex/gstspeexdec.c @@ -132,7 +132,7 @@ gst_speex_dec_reset (GstSpeexDec * dec) dec->frame_size = 0; dec->frame_duration = 0; dec->mode = NULL; - free (dec->header); + speex_header_free (dec->header); dec->header = NULL; speex_bits_destroy (&dec->bits); speex_bits_set_bit_buffer (&dec->bits, NULL, 0); diff --git a/ext/speex/gstspeexenc.c b/ext/speex/gstspeexenc.c index 52faa6e..64314f8 100644 --- a/ext/speex/gstspeexenc.c +++ b/ext/speex/gstspeexenc.c @@ -718,7 +718,8 @@ gst_speex_enc_handle_frame (GstAudioEncoder * benc, GstBuffer * buf) /* create header buffer */ data = (guint8 *) speex_header_to_packet (&enc->header, &data_len); - buf1 = gst_buffer_new_wrapped (data, data_len); + buf1 = gst_buffer_new_wrapped_full (0, + data, data_len, 0, data_len, data, (GDestroyNotify) speex_header_free); GST_BUFFER_OFFSET_END (buf1) = 0; GST_BUFFER_OFFSET (buf1) = 0; -- 2.7.4