summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Funk <juergen.funk_ml@cib.de>2019-03-21 09:22:03 +0100
committerStephan Bergmann <sbergman@redhat.com>2019-03-21 14:23:46 +0100
commitdf3fed52760a72b2a729f7b685adaa2da86d7f76 (patch)
tree8190440e3576776f309c37d4b5665bb14b33055e
parenttdf#120161 sc: pdf export unit test (diff)
downloadcore-df3fed52760a72b2a729f7b685adaa2da86d7f76.tar.gz
core-df3fed52760a72b2a729f7b685adaa2da86d7f76.zip
pUnoReturn should be null when UNO methode is VOID
the problem is that at least the msvc_win32_x86-64 bridge's unoInterfaceProxyDispatch (bridges/source/cpp_uno/msvc_win32_x86-64/uno2cpp.cxx) requires pUnoReturn to be a nullptr when the UNO method has VOID return type (see computation of retKind in cpp_call in the same file), but that IdlInterfaceMethodImpl::invoke doesn't set up the arguments according to that expectation. Change-Id: I187a997300571cd9822de2eeacf7ad887ad00a4f Reviewed-on: https://gerrit.libreoffice.org/69495 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com> (cherry picked from commit 14a11ab5dfa2ea34049866517ee78170922aee4e) Reviewed-on: https://gerrit.libreoffice.org/69502 Tested-by: Jenkins
-rw-r--r--stoc/source/corereflection/criface.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/stoc/source/corereflection/criface.cxx b/stoc/source/corereflection/criface.cxx
index 25839f741f5f..4ce3b0fc8ae0 100644
--- a/stoc/source/corereflection/criface.cxx
+++ b/stoc/source/corereflection/criface.cxx
@@ -594,7 +594,7 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > &
// end of a "short" struct by writing the full contents of a "long"
// register); so create enough space here (assuming that no ABI requires
// padding larger than 16 byte boundaries):
- void * pUnoReturn = alloca( multipleOf16(pReturnType->nSize) );
+ void * pUnoReturn = (pReturnType->nSize == 0) ? nullptr : alloca( multipleOf16(pReturnType->nSize) );
void ** ppUnoArgs = static_cast<void **>(alloca( sizeof(void *) * nParams *2 ));
typelib_TypeDescription ** ppParamTypes = reinterpret_cast<typelib_TypeDescription **>(ppUnoArgs + nParams);