diff --git a/src/backends/edid-parse.c b/src/backends/edid-parse.c index c748f909c..48e38120f 100644 --- a/src/backends/edid-parse.c +++ b/src/backends/edid-parse.c @@ -595,7 +595,16 @@ meta_edid_info_new_parse (const uint8_t *edid, } else { - g_free (info); + meta_edid_info_free (info); return NULL; } } + +void +meta_edid_info_free (MetaEdidInfo *info) +{ + g_clear_pointer (&info->manufacturer_code, g_free); + g_clear_pointer (&info->dsc_serial_number, g_free); + g_clear_pointer (&info->dsc_product_name, g_free); + g_free (info); +} diff --git a/src/backends/edid.h b/src/backends/edid.h index 042204d50..f66fffa3f 100644 --- a/src/backends/edid.h +++ b/src/backends/edid.h @@ -96,3 +96,8 @@ struct _MetaEdidInfo META_EXPORT_TEST MetaEdidInfo *meta_edid_info_new_parse (const uint8_t *edid, size_t size); + +META_EXPORT_TEST +void meta_edid_info_free (MetaEdidInfo *info); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (MetaEdidInfo, meta_edid_info_free) diff --git a/src/backends/meta-output.c b/src/backends/meta-output.c index b29e6c475..647742cb7 100644 --- a/src/backends/meta-output.c +++ b/src/backends/meta-output.c @@ -111,7 +111,7 @@ meta_output_info_unref (MetaOutputInfo *output_info) g_free (output_info->product); g_free (output_info->serial); g_free (output_info->edid_checksum_md5); - g_free (output_info->edid_info); + g_clear_pointer (&output_info->edid_info, meta_edid_info_free); g_free (output_info->modes); g_free (output_info->possible_crtcs); g_free (output_info->possible_clones); diff --git a/src/tests/edid-tests.c b/src/tests/edid-tests.c index 68a9d8d66..a4ba03419 100644 --- a/src/tests/edid-tests.c +++ b/src/tests/edid-tests.c @@ -65,7 +65,7 @@ int main (int argc, char **argv) { - MetaEdidInfo *edid_info; + g_autoptr (MetaEdidInfo) edid_info = NULL; edid_info = meta_edid_info_new_parse (edid_blob,edid_blob_len); g_assert_nonnull (edid_info); diff --git a/src/wayland/meta-wayland-drm-lease.c b/src/wayland/meta-wayland-drm-lease.c index 6693621c5..60ec7429c 100644 --- a/src/wayland/meta-wayland-drm-lease.c +++ b/src/wayland/meta-wayland-drm-lease.c @@ -357,7 +357,7 @@ get_connector_description (MetaKmsConnector *kms_connector) { const MetaKmsConnectorState *connector_state; gconstpointer edid_data; - g_autofree MetaEdidInfo *edid_info = NULL; + g_autoptr (MetaEdidInfo) edid_info = NULL; size_t edid_size; g_autofree char *vendor = NULL; g_autofree char *product = NULL;