From ee6fcdd18b1a839d7d60617d4fda622f6e6e7e66 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Fri, 22 Aug 2014 13:52:53 +0100 Subject: Related: rhbz#1125588 ppc64le fix simple struct returning Change-Id: I1e253922fdb606648eff9865f1125a24e35b0d9a --- bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx | 8 ++++++-- 1 file 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 -- cgit