diff options
author | Simon Feltman <sfeltman@src.gnome.org> | 2014-07-28 04:40:36 -0700 |
---|---|---|
committer | Simon Feltman <sfeltman@src.gnome.org> | 2014-08-17 22:31:19 -0700 |
commit | 142ff1903d34876db3d1bee5e9782ac49de12313 (patch) | |
tree | 0de158b71ff3b107fbdc6034f2bd1ac7d0054015 /gi/pygi-signal-closure.c | |
parent | 04816f74194bd2c95b8b958dcf9ed5da5a83e001 (diff) | |
download | pygobject-142ff1903d34876db3d1bee5e9782ac49de12313.tar.gz |
Never dup data structures when marshaling signal in arguments
Always assume transfer-none of GValue arguments to signal handlers.
A signal handler with arguments marked as transfer-full does not
make any sense, so assume they are always transfer-none.
https://bugzilla.gnome.org/show_bug.cgi?id=726999
Diffstat (limited to 'gi/pygi-signal-closure.c')
-rw-r--r-- | gi/pygi-signal-closure.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/gi/pygi-signal-closure.c b/gi/pygi-signal-closure.c index 39e08819..0c6b9b97 100644 --- a/gi/pygi-signal-closure.c +++ b/gi/pygi-signal-closure.c @@ -109,14 +109,12 @@ pygi_signal_closure_marshal(GClosure *closure, } else if (i < sig_info_highest_arg) { GIArgInfo arg_info; GITypeInfo type_info; - GITransfer transfer; GIArgument arg = { 0, }; PyObject *item = NULL; gboolean free_array = FALSE; g_callable_info_load_arg(signal_info, i - 1, &arg_info); g_arg_info_load_type(&arg_info, &type_info); - transfer = g_arg_info_get_ownership_transfer(&arg_info); arg = _pygi_argument_from_g_value(¶m_values[i], &type_info); @@ -130,7 +128,7 @@ pygi_signal_closure_marshal(GClosure *closure, &free_array); } - item = _pygi_argument_to_object (&arg, &type_info, transfer); + item = _pygi_argument_to_object (&arg, &type_info, GI_TRANSFER_NOTHING); if (free_array) { g_array_free (arg.v_pointer, FALSE); |