Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gstreamer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2022-11-12 12:40:22 +0300
committerEdward Hervey <bilboed@bilboed.com>2022-11-13 08:59:11 +0300
commit3f95779c30ce379dafe69e0888790dc8f363341c (patch)
treeb31b4fe0aa134d8c08966d9e9936e1f5fb9d4e51
parent00133ebbe43f9c83747e4ab7eb400092d88430bb (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.c22
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,