Skip to content
Commit dc69b12d authored by Colin Walters's avatar Colin Walters
Browse files

function: Fix ffi return value handling on 32 bit

We had two major problems in marshaling.  One is that our conversion
routine took an unsigned ffi_arg value, which we put signed values
into. Also, our fallback case was copying from ffi_arg (which is
always 64 bit on architectures we support) into the pointer member of
the GIArgument union, but on 32 bit architecture pointers are just 32
bit.

Fix both of these by creating a new union, and then passing in a
pointer to the correct member of it for the given return value type
we're supplying to ffi.  We then need to again convert from this union
type into a GIArgument.

Debugged with lots of help from Ray Strode <rstrode@redhat.com>

https://bugzilla.gnome.org/show_bug.cgi?id=665152
parent 4cecec9c
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment