Hello,

I have attached a patch resolving reported issue on mips architecture.
We believe that this fix will work also on other 32-bit big endian 
architectures, but additional work will be needed for 64-bit big endian.
Could someone, please test this patch on other big endian architectures.

Best regards,
Jurica
Description: patch resolve issues on mips big endian architecture.
Author: Jurica Stanojkovic <jurica.stanojko...@imgtec.com>
--- libglib-object-introspection-perl-0.016.orig/gperl-i11n-invoke-c.c
+++ libglib-object-introspection-perl-0.016/gperl-i11n-invoke-c.c
@@ -180,7 +180,32 @@ invoke_c_code (GICallableInfo *info,
 		ccroak ("Could not prepare a call interface");
 	}
 
-	ffi_call (&cif, func_pointer, &return_value, iinfo.args);
+	if(iinfo.return_type_ffi==&ffi_type_sint8)
+	{
+		ffi_sarg result;
+		ffi_call (&cif, func_pointer, &result, iinfo.args);
+		return_value.v_int8=result;
+	}
+	else if(iinfo.return_type_ffi==&ffi_type_uint8)
+	{
+		ffi_arg result;
+		ffi_call (&cif, func_pointer, &result, iinfo.args);
+		return_value.v_uint8=result;
+	}
+	else if(iinfo.return_type_ffi==&ffi_type_sint16)
+	{
+		ffi_sarg result;
+		ffi_call (&cif, func_pointer, &result, iinfo.args);
+		return_value.v_int16=result;
+	}
+	else if(iinfo.return_type_ffi==&ffi_type_uint16)
+	{
+		ffi_arg result;
+		ffi_call (&cif, func_pointer, &result, iinfo.args);
+		return_value.v_uint16=result;
+	}
+        else
+		ffi_call (&cif, func_pointer, &return_value, iinfo.args);
 
 	/* free call-scoped data */
 	_invoke_free_after_call_handlers (&iinfo);

Reply via email to