diff options
author | Caolán McNamara <cmc@openoffice.org> | 2010-01-18 11:56:59 +0000 |
---|---|---|
committer | Caolán McNamara <cmc@openoffice.org> | 2010-01-18 11:56:59 +0000 |
commit | cbb8cded67d757f53642e6753d286c6612757ffe (patch) | |
tree | c82fa9bdca601becf8c1f6c9d7b15859b94b81b7 /bridges | |
parent | CWS-TOOLING: integrate CWS cmcfixes68 (diff) | |
download | core-cbb8cded67d757f53642e6753d286c6612757ffe.tar.gz core-cbb8cded67d757f53642e6753d286c6612757ffe.zip |
s390xport02: #i108410# fix endian issues in s390x
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx | 8 | ||||
-rw-r--r-- | bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx | 8 |
2 files changed, 12 insertions, 4 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..4cb95f9faf76 100644 --- a/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_s390x/cpp2uno.cxx @@ -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: diff --git a/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx index 5940f566f9ca..cd922c2fa870 100644 --- a/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_s390x/uno2cpp.cxx @@ -60,19 +60,21 @@ void MapReturn(long r2, double f0, typelib_TypeClass eTypeClass, sal_uInt64* pRe { case typelib_TypeClass_HYPER: case typelib_TypeClass_UNSIGNED_HYPER: + *pRegisterReturn = r2; + break; case typelib_TypeClass_LONG: case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_ENUM: - *pRegisterReturn = r2; + *(unsigned int*)pRegisterReturn = (unsigned int)r2; break; case typelib_TypeClass_CHAR: case typelib_TypeClass_SHORT: case typelib_TypeClass_UNSIGNED_SHORT: - *pRegisterReturn = (unsigned short)r2; + *(unsigned short*)pRegisterReturn = (unsigned short)r2; break; case typelib_TypeClass_BOOLEAN: case typelib_TypeClass_BYTE: - *pRegisterReturn = (unsigned char)r2; + *(unsigned char*)pRegisterReturn = (unsigned char)r2; break; case typelib_TypeClass_FLOAT: *reinterpret_cast<float *>( pRegisterReturn ) = f0; |