When GLib deprecated g_mutex_new/g_mutex_free, we introduced a compatibility wrapper to implement these using non-deprecated functions. This was done by allocating 0-filled memory by the mutex, and then letting GLib initialize the structure when needed. However, we must call g_mutex_clear when destroying the mutex to free these resources, which this patch fix. --- libvirt-gobject/libvirt-gobject-compat.c | 16 ++++++++++++++++ libvirt-gobject/libvirt-gobject-compat.h | 8 ++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/libvirt-gobject/libvirt-gobject-compat.c b/libvirt-gobject/libvirt-gobject-compat.c index 99cd44c..14b5eb3 100644 --- a/libvirt-gobject/libvirt-gobject-compat.c +++ b/libvirt-gobject/libvirt-gobject-compat.c @@ -103,3 +103,19 @@ g_simple_async_report_take_gerror_in_idle(GObject *object, g_object_unref(simple); } #endif + +GMutex *gvir_mutex_new(void) +{ + GMutex *mutex; + + mutex = g_new(GMutex, 1); + g_mutex_init(mutex); + + return mutex; +} + +void gvir_mutex_free(GMutex *mutex) +{ + g_mutex_clear(mutex); + g_free(mutex); +} diff --git a/libvirt-gobject/libvirt-gobject-compat.h b/libvirt-gobject/libvirt-gobject-compat.h index 839dfe1..1d45018 100644 --- a/libvirt-gobject/libvirt-gobject-compat.h +++ b/libvirt-gobject/libvirt-gobject-compat.h @@ -27,8 +27,12 @@ #include <gio/gio.h> #if GLIB_CHECK_VERSION(2, 31, 0) -#define g_mutex_new() g_new0(GMutex, 1) -#define g_mutex_free(m) g_free(m) + +void gvir_mutex_free(GMutex *mutex); +GMutex *gvir_mutex_new(void); +#define g_mutex_new gvir_mutex_new +#define g_mutex_free gvir_mutex_free + #endif #if !GLIB_CHECK_VERSION(2,26,0) -- 1.8.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list