From ab59739e1177d463fc7577def059deb0179662cc Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 10 Feb 2012 08:24:28 -0500 Subject: [PATCH] gobject: Use a destructor rather than g_atexit() for refcount debugging https://bugzilla.gnome.org/show_bug.cgi?id=669671 --- gobject/gobject.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gobject/gobject.c b/gobject/gobject.c index 88fb7ef39..69f14a82e 100644 --- a/gobject/gobject.c +++ b/gobject/gobject.c @@ -33,6 +33,7 @@ #include "gparamspecs.h" #include "gvaluetypes.h" #include "gobject_trace.h" +#include "gconstructor.h" /** * SECTION:objects @@ -329,6 +330,13 @@ debug_objects_foreach (gpointer key, object->ref_count); } +#ifdef G_HAS_CONSTRUCTORS +#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(debug_objects_atexit) +#endif +G_DEFINE_DESTRUCTOR(debug_objects_atexit) +#endif /* G_HAS_CONSTRUCTORS */ + static void debug_objects_atexit (void) { @@ -387,7 +395,9 @@ _g_object_type_init (void) IF_DEBUG (OBJECTS) { debug_objects_ht = g_hash_table_new (g_direct_hash, NULL); +#ifndef G_HAS_CONSTRUCTORS g_atexit (debug_objects_atexit); +#endif /* G_HAS_CONSTRUCTORS */ } #endif /* G_ENABLE_DEBUG */ }