From 56f1f5cc8cf25f82603f2c33865b47f0ae5a4f4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=9Aled=C5=BA?= Date: Thu, 8 Aug 2024 12:21:40 +0200 Subject: [PATCH] Revisit memory deallocation --- c_src/xav/decoder.c | 9 ++++++--- c_src/xav/reader.c | 6 +++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/c_src/xav/decoder.c b/c_src/xav/decoder.c index 9aa05c8..5682932 100644 --- a/c_src/xav/decoder.c +++ b/c_src/xav/decoder.c @@ -61,9 +61,12 @@ int decoder_decode(struct Decoder *decoder, AVPacket *pkt, AVFrame *frame) { } void decoder_free_frame(struct Decoder *decoder) { - // TODO revisit this - av_frame_unref(decoder->frame); - av_packet_unref(decoder->pkt); + if (decoder->frame != NULL) { + av_frame_unref(decoder->frame); + } + if (decoder->pkt != NULL) { + av_packet_unref(decoder->pkt); + } } void decoder_free(struct Decoder **decoder) { diff --git a/c_src/xav/reader.c b/c_src/xav/reader.c index a328a31..97294e4 100644 --- a/c_src/xav/reader.c +++ b/c_src/xav/reader.c @@ -175,7 +175,11 @@ int reader_next_frame(struct Reader *reader) { return 0; } -void reader_free_frame(struct Reader *reader) { av_frame_unref(reader->frame); } +void reader_free_frame(struct Reader *reader) { + if (reader->frame != NULL) { + av_frame_unref(reader->frame); + } +} void reader_free(struct Reader **reader) { XAV_LOG_DEBUG("Freeing Reader object");