[glib: 18/19] gsignal: Warn if g_signal_lookup() is called on an invalid signal name
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 18/19] gsignal: Warn if g_signal_lookup() is called on an invalid signal name
- Date: Thu, 12 Dec 2019 12:12:50 +0000 (UTC)
commit c577bc89cd591eb50288f16c624a3ef60fd4c654
Author: Philip Withnall <withnall endlessm com>
Date: Tue Nov 12 21:15:13 2019 +0000
gsignal: Warn if g_signal_lookup() is called on an invalid signal name
And add a test for it.
Signed-off-by: Philip Withnall <withnall endlessm com>
gobject/gsignal.c | 3 +++
gobject/tests/signals.c | 25 +++++++++++++++++++++++++
2 files changed, 28 insertions(+)
---
diff --git a/gobject/gsignal.c b/gobject/gsignal.c
index 579eb4846..e610056d6 100644
--- a/gobject/gsignal.c
+++ b/gobject/gsignal.c
@@ -1331,6 +1331,9 @@ g_signal_lookup (const gchar *name,
else if (!g_type_class_peek (itype))
g_warning (G_STRLOC ": unable to look up signal \"%s\" of unloaded type '%s'",
name, g_type_name (itype));
+ else if (!is_valid_signal_name (name))
+ g_warning (G_STRLOC ": unable to look up invalid signal name \"%s\" on type '%s'",
+ name, g_type_name (itype));
}
return signal_id;
diff --git a/gobject/tests/signals.c b/gobject/tests/signals.c
index 0864f2a31..ae8bd9dc2 100644
--- a/gobject/tests/signals.c
+++ b/gobject/tests/signals.c
@@ -1311,6 +1311,30 @@ test_lookup (void)
g_type_class_unref (test_class);
}
+static void
+test_lookup_invalid (void)
+{
+ g_test_summary ("Test that g_signal_lookup() emits a warning if looking up an invalid signal name.");
+
+ if (g_test_subprocess ())
+ {
+ GTypeClass *test_class;
+ guint signal_id;
+
+ test_class = g_type_class_ref (test_get_type ());
+
+ signal_id = g_signal_lookup ("", test_get_type ());
+ g_assert_cmpint (signal_id, ==, 0);
+
+ g_type_class_unref (test_class);
+ return;
+ }
+
+ g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*WARNING*unable to look up invalid signal name*");
+}
+
static void
test_parse_name (void)
{
@@ -1455,6 +1479,7 @@ main (int argc,
g_test_add_func ("/gobject/signals/test-disconnection-wrong-object", test_signal_disconnect_wrong_object);
g_test_add_func ("/gobject/signals/clear-signal-handler", test_clear_signal_handler);
g_test_add_func ("/gobject/signals/lookup", test_lookup);
+ g_test_add_func ("/gobject/signals/lookup/invalid", test_lookup_invalid);
g_test_add_func ("/gobject/signals/parse-name", test_parse_name);
g_test_add_func ("/gobject/signals/parse-name/invalid", test_parse_name_invalid);
g_test_add_data_func ("/gobject/signals/invalid-name/colon", "my_int:hello", test_signals_invalid_name);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]