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
Please register or sign in to comment