diff options
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx index e866e05f32c5..7e169993e905 100644 --- a/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx @@ -491,7 +491,7 @@ static typelib_TypeClass cpp_mediate( long privateSnippetExecutor(long r2, long r3, long r4, long r5, long r6, long firstonstack) { register long r0 asm("r0"); - sal_uInt32 nOffsetAndIndex = r0; + sal_uInt64 nOffsetAndIndex = r0; long sp = (long)&firstonstack; @@ -522,15 +522,21 @@ long privateSnippetExecutor(long r2, long r3, long r4, long r5, long r6, long fi switch( aType ) { - case typelib_TypeClass_VOID: case typelib_TypeClass_BOOLEAN: case typelib_TypeClass_BYTE: + nRegReturn[0] = (unsigned long)(*(unsigned char *)nRegReturn); + break; case typelib_TypeClass_CHAR: case typelib_TypeClass_UNSIGNED_SHORT: case typelib_TypeClass_SHORT: + nRegReturn[0] = (unsigned long)(*(unsigned short *)nRegReturn); + break; case typelib_TypeClass_ENUM: case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_LONG: + nRegReturn[0] = (unsigned long)(*(unsigned int *)nRegReturn); + break; + case typelib_TypeClass_VOID: default: break; case typelib_TypeClass_FLOAT: |