Kaydet (Commit) 14a11ab5 authored tarafından Juergen Funk's avatar Juergen Funk Kaydeden (comit) Stephan Bergmann

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/69495Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
Tested-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst 72684042
......@@ -579,7 +579,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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment