summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-08-22 13:52:53 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-08-22 13:53:19 +0100
commitee6fcdd18b1a839d7d60617d4fda622f6e6e7e66 (patch)
tree5d8f2265f87a9715204f1ceb620915c703f17673 /bridges
parent9a6d1c6e16132253327e27b5f7a8cff6b8fa4bc9 (diff)
Related: rhbz#1125588 ppc64le fix simple struct returning
Change-Id: I1e253922fdb606648eff9865f1125a24e35b0d9a
Diffstat (limited to 'bridges')
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx8
1 files changed, 6 insertions, 2 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
index 55a53081cc95..aa054d78a16a 100644
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
@@ -305,14 +305,18 @@ static void cpp_call(
void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion
- bool bOverflow = false;
+ bool bOverflow = false;
+ bool bSimpleReturn = true;
if (pReturnTypeDescr)
{
#if OSL_DEBUG_LEVEL > 2
fprintf(stderr, "return type is %d\n", pReturnTypeDescr->eTypeClass);
#endif
- if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr ))
+ if (ppc64::return_in_hidden_param(pReturnTypeRef))
+ bSimpleReturn = false;
+
+ if (bSimpleReturn)
{
pCppReturn = pUnoReturn; // direct way for simple types
#if OSL_DEBUG_LEVEL > 2