diff options
author | Edward Hervey <bilboed@bilboed.com> | 2022-11-12 12:40:22 +0300 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2022-11-13 08:59:11 +0300 |
commit | 3f95779c30ce379dafe69e0888790dc8f363341c (patch) | |
tree | b31b4fe0aa134d8c08966d9e9936e1f5fb9d4e51 | |
parent | 00133ebbe43f9c83747e4ab7eb400092d88430bb (diff) |
validate: Don't leak discoverer information
The various streaminfo were being overwritten without being unreffed first
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3390>
-rw-r--r-- | subprojects/gst-devtools/validate/gst/validate/media-descriptor-writer.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/subprojects/gst-devtools/validate/gst/validate/media-descriptor-writer.c b/subprojects/gst-devtools/validate/gst/validate/media-descriptor-writer.c index 95b3512743..66fcb03ddb 100644 --- a/subprojects/gst-devtools/validate/gst/validate/media-descriptor-writer.c +++ b/subprojects/gst-devtools/validate/gst/validate/media-descriptor-writer.c @@ -735,17 +735,25 @@ gst_validate_media_descriptor_writer_new_discover (GstValidateRunner * runner, gst_validate_media_descriptor_writer_add_stream (writer, streaminfo); } } else { + GstDiscovererStreamInfo *nextinfo; if (!GST_IS_DISCOVERER_AUDIO_INFO (info) - && !GST_IS_DISCOVERER_AUDIO_INFO (info) - && gst_discoverer_stream_info_get_next (streaminfo)) { - gst_validate_media_descriptor_get_file_node ((GstValidateMediaDescriptor - *) writer)->caps = - gst_discoverer_stream_info_get_caps (streaminfo); - streaminfo = gst_discoverer_stream_info_get_next (streaminfo); + && !GST_IS_DISCOVERER_VIDEO_INFO (info)) { + nextinfo = gst_discoverer_stream_info_get_next (streaminfo); + if (nextinfo) { + GstValidateMediaFileNode *fn = + gst_validate_media_descriptor_get_file_node ( + (GstValidateMediaDescriptor *) writer); + fn->caps = gst_discoverer_stream_info_get_caps (streaminfo); + gst_discoverer_stream_info_unref (streaminfo); + streaminfo = nextinfo; + } } do { gst_validate_media_descriptor_writer_add_stream (writer, streaminfo); - } while ((streaminfo = gst_discoverer_stream_info_get_next (streaminfo))); + nextinfo = gst_discoverer_stream_info_get_next (streaminfo); + gst_discoverer_stream_info_unref (streaminfo); + streaminfo = nextinfo; + } while (streaminfo); } } else { GST_VALIDATE_REPORT (writer, FILE_NO_STREAM_INFO, |