summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungha Yang <seungha@centricular.com>2020-05-29 00:45:03 +0900
committerSeungha Yang <seungha@centricular.com>2020-05-29 00:54:10 +0900
commit1b8df15b7888b6a476f71a8d6906330eb7751ffd (patch)
tree8d67fb96093717e89f85d5d56d21a056d0c6248f
parentb94b9988fa0219566274214779887f33644167b3 (diff)
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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/606>
-rw-r--r--ext/speex/gstspeexdec.c2
-rw-r--r--ext/speex/gstspeexenc.c3
2 files changed, 3 insertions, 2 deletions
diff --git a/ext/speex/gstspeexdec.c b/ext/speex/gstspeexdec.c
index ca2dfdb313..3c29ec7ac2 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 52faa6e720..64314f86bf 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;