diff options
author | Matthias Clasen <mclasen@redhat.com> | 2016-07-28 08:51:17 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-08-25 13:26:58 -0400 |
commit | ef16cbee5bfb4378ca40a2e034c66539f222b22a (patch) | |
tree | 437db8800aaa166c17c4adb2b54d4073d4cdd2e3 | |
parent | 097f70828fa2b2b1b903c2969ce756e27750675c (diff) | |
download | glib-ef16cbee5bfb4378ca40a2e034c66539f222b22a.tar.gz |
Don't set a va marshaller if a marshaller was set
Otherwise we get warnings when the caller later tries to set a
va marshaller with g_signal_set_va_marshaller.
https://bugzilla.gnome.org/show_bug.cgi?id=769076
-rw-r--r-- | gobject/gsignal.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gobject/gsignal.c b/gobject/gsignal.c index 03fe09f64..26283e09c 100644 --- a/gobject/gsignal.c +++ b/gobject/gsignal.c @@ -1628,6 +1628,7 @@ g_signal_newv (const gchar *signal_name, guint signal_id, i; SignalNode *node; GSignalCMarshaller builtin_c_marshaller; + GSignalCVaMarshaller builtin_va_marshaller; GSignalCVaMarshaller va_marshaller; g_return_val_if_fail (signal_name != NULL, 0); @@ -1736,14 +1737,14 @@ g_signal_newv (const gchar *signal_name, node->accumulator = NULL; builtin_c_marshaller = NULL; - va_marshaller = NULL; + builtin_va_marshaller = NULL; /* Pick up built-in va marshallers for standard types, and instead of generic marshaller if no marshaller specified */ if (n_params == 0 && return_type == G_TYPE_NONE) { builtin_c_marshaller = g_cclosure_marshal_VOID__VOID; - va_marshaller = g_cclosure_marshal_VOID__VOIDv; + builtin_va_marshaller = g_cclosure_marshal_VOID__VOIDv; } else if (n_params == 1 && return_type == G_TYPE_NONE) { @@ -1751,7 +1752,7 @@ g_signal_newv (const gchar *signal_name, else if (g_type_is_a (param_types[0] & ~G_SIGNAL_TYPE_STATIC_SCOPE, G_TYPE_ ##__type__)) \ { \ builtin_c_marshaller = g_cclosure_marshal_VOID__ ## __type__; \ - va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v; \ + builtin_va_marshaller = g_cclosure_marshal_VOID__ ## __type__ ##v; \ } if (0) {} @@ -1777,13 +1778,18 @@ g_signal_newv (const gchar *signal_name, if (c_marshaller == NULL) { if (builtin_c_marshaller) - c_marshaller = builtin_c_marshaller; + { + c_marshaller = builtin_c_marshaller; + va_marshaller = builtin_va_marshaller; + } else { c_marshaller = g_cclosure_marshal_generic; va_marshaller = g_cclosure_marshal_generic_va; } } + else + va_marshaller = NULL; node->c_marshaller = c_marshaller; node->va_marshaller = va_marshaller; |