summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.be/8443e173-30ee-4e83-9228-9e11414e3432/bugs/529e18a6-babb-4ec9-bc2e-2ab54b14dc63/values2
-rw-r--r--clang-plugin/gsignal-checker.cpp11
-rw-r--r--tests/gsignal-connect.c13
-rw-r--r--tests/gsignal.head.c9
4 files changed, 25 insertions, 10 deletions
diff --git a/.be/8443e173-30ee-4e83-9228-9e11414e3432/bugs/529e18a6-babb-4ec9-bc2e-2ab54b14dc63/values b/.be/8443e173-30ee-4e83-9228-9e11414e3432/bugs/529e18a6-babb-4ec9-bc2e-2ab54b14dc63/values
index 95c02e9..aa19b1c 100644
--- a/.be/8443e173-30ee-4e83-9228-9e11414e3432/bugs/529e18a6-babb-4ec9-bc2e-2ab54b14dc63/values
+++ b/.be/8443e173-30ee-4e83-9228-9e11414e3432/bugs/529e18a6-babb-4ec9-bc2e-2ab54b14dc63/values
@@ -26,7 +26,7 @@
- "status": "open",
+ "status": "fixed",
diff --git a/clang-plugin/gsignal-checker.cpp b/clang-plugin/gsignal-checker.cpp
index 7f4f8a1..3197cb0 100644
--- a/clang-plugin/gsignal-checker.cpp
+++ b/clang-plugin/gsignal-checker.cpp
@@ -409,15 +409,8 @@ _type_info_to_type (GITypeInfo *type_info,
return type_manager.find_pointer_type_by_name ("GSList");
case GI_TYPE_TAG_GHASH:
return type_manager.find_pointer_type_by_name ("GHashTable");
- case GI_TYPE_TAG_ERROR: {
- QualType qt = type_manager.find_pointer_type_by_name ("GError");
-
- if (!qt.isNull ()) {
- return context.getPointerType (qt);
- }
-
- return QualType ();
- }
+ case GI_TYPE_TAG_ERROR:
+ return type_manager.find_pointer_type_by_name ("GError");
default:
llvm::errs () << "Warning: Unexpected base info type " <<
g_base_info_get_type (type_info) <<
diff --git a/tests/gsignal-connect.c b/tests/gsignal-connect.c
index 06e3782..5583740 100644
--- a/tests/gsignal-connect.c
+++ b/tests/gsignal-connect.c
@@ -344,3 +344,16 @@
g_signal_connect (proxy, "interface-added",
(GCallback) dbus_object_interface_added_cb, NULL);
}
+
+/*
+ * No error
+ */
+{
+ // GDBusConnection::closed has a GError* as one of its parameters,
+ // which we want to check to avoid bug 844/529.
+ GDBusConnection *conn = g_malloc (5); // only checking the type
+ GObject *self = g_malloc (5); // only checking the type
+ g_signal_connect_object (conn, "closed",
+ G_CALLBACK (dbus_connection_closed_cb),
+ self, 0);
+}
diff --git a/tests/gsignal.head.c b/tests/gsignal.head.c
index c6b70ef..266b1d1 100644
--- a/tests/gsignal.head.c
+++ b/tests/gsignal.head.c
@@ -134,6 +134,15 @@ dbus_object_proxy_interface_added_cb (GDBusObjectProxy *obj,
/* Done */
}
+static void
+dbus_connection_closed_cb (GDBusConnection *conn,
+ gboolean remote_peer_vanished,
+ GError *error,
+ gpointer user_data)
+{
+ /* Done */
+}
+
int
main (void)
{