dash: Free various props before set & during cleanup

In addition several members were being freed via xmlFree() even though
being created via g_value_dup_string(). Switch to g_free().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
This commit is contained in:
Doug Nazar 2025-03-14 19:25:48 -04:00 committed by GStreamer Marge Bot
parent 2f11f7e434
commit 6279c4bab7
12 changed files with 37 additions and 57 deletions

View File

@ -77,8 +77,7 @@ gst_mpd_adaptation_set_node_finalize (GObject * object)
if (self->lang)
xmlFree (self->lang);
if (self->contentType)
xmlFree (self->contentType);
g_free (self->contentType);
g_slice_free (GstXMLRatio, self->par);
g_slice_free (GstXMLConditionalUintType, self->segmentAlignment);
g_slice_free (GstXMLConditionalUintType, self->subsegmentAlignment);

View File

@ -88,8 +88,7 @@ gst_mpd_period_node_finalize (GObject * object)
{
GstMPDPeriodNode *self = GST_MPD_PERIOD_NODE (object);
if (self->id)
xmlFree (self->id);
g_free (self->id);
gst_mpd_segment_base_node_free (self->SegmentBase);
gst_mpd_segment_list_node_free (self->SegmentList);
gst_mpd_segment_template_node_free (self->SegmentTemplate);

View File

@ -190,22 +190,16 @@ gst_mpd_representation_base_node_finalize (GObject * object)
GstMPDRepresentationBaseNode *self =
GST_MPD_REPRESENTATION_BASE_NODE (object);
if (self->profiles)
xmlFree (self->profiles);
g_free (self->profiles);
g_slice_free (GstXMLRatio, self->sar);
g_slice_free (GstXMLFrameRate, self->frameRate);
g_slice_free (GstXMLFrameRate, self->minFrameRate);
g_slice_free (GstXMLFrameRate, self->maxFrameRate);
if (self->audioSamplingRate)
xmlFree (self->audioSamplingRate);
if (self->mimeType)
xmlFree (self->mimeType);
if (self->segmentProfiles)
xmlFree (self->segmentProfiles);
if (self->codecs)
xmlFree (self->codecs);
if (self->scanType)
xmlFree (self->scanType);
g_free (self->audioSamplingRate);
g_free (self->mimeType);
g_free (self->segmentProfiles);
g_free (self->codecs);
g_free (self->scanType);
g_list_free_full (self->FramePacking,
(GDestroyNotify) gst_mpd_descriptor_type_node_free);
g_list_free_full (self->AudioChannelConfiguration,

View File

@ -82,8 +82,7 @@ gst_mpd_representation_node_finalize (GObject * object)
{
GstMPDRepresentationNode *self = GST_MPD_REPRESENTATION_NODE (object);
if (self->id)
xmlFree (self->id);
g_free (self->id);
g_strfreev (self->dependencyId);
g_strfreev (self->mediaStreamStructureId);
g_list_free_full (self->SubRepresentations,

View File

@ -42,15 +42,19 @@ gst_mpd_segment_template_node_set_property (GObject * object, guint prop_id,
GstMPDSegmentTemplateNode *self = GST_MPD_SEGMENT_TEMPLATE_NODE (object);
switch (prop_id) {
case PROP_MPD_SEGMENT_TEMPLATE_MEDIA:
g_free (self->media);
self->media = g_value_dup_string (value);
break;
case PROP_MPD_SEGMENT_TEMPLATE_INDEX:
g_free (self->index);
self->index = g_value_dup_string (value);
break;
case PROP_MPD_SEGMENT_TEMPLATE_INITIALIZATION:
g_free (self->initialization);
self->initialization = g_value_dup_string (value);
break;
case PROP_MPD_SEGMENT_TEMPLATE_BITSTREAM_SWITCHING:
g_free (self->bitstreamSwitching);
self->bitstreamSwitching = g_value_dup_string (value);
break;
default:
@ -88,14 +92,10 @@ gst_mpd_segment_template_node_finalize (GObject * object)
{
GstMPDSegmentTemplateNode *self = GST_MPD_SEGMENT_TEMPLATE_NODE (object);
if (self->media)
xmlFree (self->media);
if (self->index)
xmlFree (self->index);
if (self->initialization)
xmlFree (self->initialization);
if (self->bitstreamSwitching)
xmlFree (self->bitstreamSwitching);
g_free (self->media);
g_free (self->index);
g_free (self->initialization);
g_free (self->bitstreamSwitching);
G_OBJECT_CLASS (gst_mpd_segment_template_node_parent_class)->finalize
(object);

View File

@ -69,8 +69,7 @@ gst_mpd_segment_url_node_finalize (GObject * object)
{
GstMPDSegmentURLNode *self = GST_MPD_SEGMENT_URL_NODE (object);
if (self->media)
xmlFree (self->media);
g_free (self->media);
g_slice_free (GstXMLRange, self->mediaRange);
if (self->index)
xmlFree (self->index);

View File

@ -77,8 +77,7 @@ gst_mpd_adaptation_set_node_finalize (GObject * object)
if (self->lang)
xmlFree (self->lang);
if (self->contentType)
xmlFree (self->contentType);
g_free (self->contentType);
g_free (self->par);
g_free (self->segmentAlignment);
g_free (self->subsegmentAlignment);

View File

@ -88,8 +88,7 @@ gst_mpd_period_node_finalize (GObject * object)
{
GstMPDPeriodNode *self = GST_MPD_PERIOD_NODE (object);
if (self->id)
xmlFree (self->id);
g_free (self->id);
gst_mpd_segment_base_node_free (self->SegmentBase);
gst_mpd_segment_list_node_free (self->SegmentList);
gst_mpd_segment_template_node_free (self->SegmentTemplate);

View File

@ -190,22 +190,16 @@ gst_mpd_representation_base_node_finalize (GObject * object)
GstMPDRepresentationBaseNode *self =
GST_MPD_REPRESENTATION_BASE_NODE (object);
if (self->profiles)
xmlFree (self->profiles);
g_free (self->profiles);
g_free (self->sar);
g_free (self->frameRate);
g_free (self->minFrameRate);
g_free (self->maxFrameRate);
if (self->audioSamplingRate)
xmlFree (self->audioSamplingRate);
if (self->mimeType)
xmlFree (self->mimeType);
if (self->segmentProfiles)
xmlFree (self->segmentProfiles);
if (self->codecs)
xmlFree (self->codecs);
if (self->scanType)
xmlFree (self->scanType);
g_free (self->audioSamplingRate);
g_free (self->mimeType);
g_free (self->segmentProfiles);
g_free (self->codecs);
g_free (self->scanType);
g_list_free_full (self->FramePacking,
(GDestroyNotify) gst_mpd_descriptor_type_node_free);
g_list_free_full (self->AudioChannelConfiguration,

View File

@ -82,8 +82,7 @@ gst_mpd_representation_node_finalize (GObject * object)
{
GstMPDRepresentationNode *self = GST_MPD_REPRESENTATION_NODE (object);
if (self->id)
xmlFree (self->id);
g_free (self->id);
g_strfreev (self->dependencyId);
g_strfreev (self->mediaStreamStructureId);
g_list_free_full (self->SubRepresentations,

View File

@ -42,15 +42,19 @@ gst_mpd_segment_template_node_set_property (GObject * object, guint prop_id,
GstMPDSegmentTemplateNode *self = GST_MPD_SEGMENT_TEMPLATE_NODE (object);
switch (prop_id) {
case PROP_MPD_SEGMENT_TEMPLATE_MEDIA:
g_free (self->media);
self->media = g_value_dup_string (value);
break;
case PROP_MPD_SEGMENT_TEMPLATE_INDEX:
g_free (self->index);
self->index = g_value_dup_string (value);
break;
case PROP_MPD_SEGMENT_TEMPLATE_INITIALIZATION:
g_free (self->initialization);
self->initialization = g_value_dup_string (value);
break;
case PROP_MPD_SEGMENT_TEMPLATE_BITSTREAM_SWITCHING:
g_free (self->bitstreamSwitching);
self->bitstreamSwitching = g_value_dup_string (value);
break;
default:
@ -88,14 +92,10 @@ gst_mpd_segment_template_node_finalize (GObject * object)
{
GstMPDSegmentTemplateNode *self = GST_MPD_SEGMENT_TEMPLATE_NODE (object);
if (self->media)
xmlFree (self->media);
if (self->index)
xmlFree (self->index);
if (self->initialization)
xmlFree (self->initialization);
if (self->bitstreamSwitching)
xmlFree (self->bitstreamSwitching);
g_free (self->media);
g_free (self->index);
g_free (self->initialization);
g_free (self->bitstreamSwitching);
G_OBJECT_CLASS (gst_mpd_segment_template_node_parent_class)->finalize
(object);

View File

@ -69,8 +69,7 @@ gst_mpd_segment_url_node_finalize (GObject * object)
{
GstMPDSegmentURLNode *self = GST_MPD_SEGMENT_URL_NODE (object);
if (self->media)
xmlFree (self->media);
g_free (self->media);
g_free (self->mediaRange);
if (self->index)
xmlFree (self->index);
@ -156,7 +155,7 @@ gst_mpd_segment_url_node_clone (GstMPDSegmentURLNode * seg_url)
if (seg_url) {
clone = gst_mpd_segment_url_node_new ();
clone->media = xmlMemStrdup (seg_url->media);
clone->media = g_strdup (seg_url->media);
clone->mediaRange = gst_xml_helper_clone_range (seg_url->mediaRange);
clone->index = xmlMemStrdup (seg_url->index);
clone->indexRange = gst_xml_helper_clone_range (seg_url->indexRange);