diff options
author | Juergen Funk <juergen.funk_ml@cib.de> | 2019-03-21 09:22:03 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2019-03-21 14:00:16 +0100 |
commit | f735f010a876a531532b9c6759f8f1cf48c5a6fa (patch) | |
tree | f09f39d636aec7bbaa45bf95e9ec82fb82bb396f /stoc | |
parent | 71e64623f08b162e18180cdae5ad532114e56190 (diff) |
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/69501
Tested-by: Jenkins
Diffstat (limited to 'stoc')
-rw-r--r-- | stoc/source/corereflection/criface.cxx | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/stoc/source/corereflection/criface.cxx b/stoc/source/corereflection/criface.cxx index c37108081fbe..4ddeecb5954d 100644 --- a/stoc/source/corereflection/criface.cxx +++ b/stoc/source/corereflection/criface.cxx @@ -578,7 +578,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); |