diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c
index 5fc67e7..cb7d506 100644
--- a/gio/gdbusmessage.c
+++ b/gio/gdbusmessage.c
@@ -115,7 +115,7 @@ enum
 G_DEFINE_TYPE (GDBusMessage, g_dbus_message, G_TYPE_OBJECT);
 
 static void
-g_dbus_message_finalize (GObject *object)
+g_dbus_message_dispose (GObject *object)
 {
   GDBusMessage *message = G_DBUS_MESSAGE (object);
 
@@ -128,6 +128,15 @@ g_dbus_message_finalize (GObject *object)
     g_object_unref (message->fd_list);
 #endif
 
+  if (G_OBJECT_CLASS (g_dbus_message_parent_class)->dispose != NULL)
+    G_OBJECT_CLASS (g_dbus_message_parent_class)->dispose (object);
+}
+
+static void
+g_dbus_message_finalize (GObject *object)
+{
+  /* Stub. Kept for future use. */
+
   if (G_OBJECT_CLASS (g_dbus_message_parent_class)->finalize != NULL)
     G_OBJECT_CLASS (g_dbus_message_parent_class)->finalize (object);
 }
@@ -158,6 +167,7 @@ g_dbus_message_class_init (GDBusMessageClass *klass)
   GObjectClass *gobject_class;
 
   gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->dispose      = g_dbus_message_dispose;
   gobject_class->finalize     = g_dbus_message_finalize;
   gobject_class->get_property = g_dbus_message_get_property;
 
