diff options
author | Tor Lillqvist <tml@collabora.com> | 2018-02-08 21:57:22 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-03-25 21:21:53 +0200 |
commit | 2e62bed6cc29fa28cfa9f0d7dfaf8ece61c08061 (patch) | |
tree | fe493c4a2060122da2ad6c9773dc705f9a715a09 | |
parent | ac774a96399228dc869b50f9f938aebb8b476313 (diff) |
Pass missing (hopefully optional) parameters as Any()
Change-Id: I93e69e589cd81fbc9606b1b08233da7fb8f5d043
Reviewed-on: https://gerrit.libreoffice.org/50089
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
(cherry picked from commit 3cd3d1044d03fdb733922bad74254f3ad65d898e)
-rw-r--r-- | extensions/source/ole/unoobjw.cxx | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/extensions/source/ole/unoobjw.cxx b/extensions/source/ole/unoobjw.cxx index 604c74577e72..04cdc890d72d 100644 --- a/extensions/source/ole/unoobjw.cxx +++ b/extensions/source/ole/unoobjw.cxx @@ -813,6 +813,17 @@ STDMETHODIMP InterfaceOleWrapper_Impl::Invoke(DISPID dispidMember, convertDispparamsArgs(dispidMember, wFlags, pdispparams , params ); + // Pass missing (hopefully optional) parameters as Any(). + InvocationInfo aInvocationInfo; + getInvocationInfoForCall(dispidMember, aInvocationInfo); + if (pdispparams->cArgs < (UINT)aInvocationInfo.aParamTypes.getLength()) + { + params.realloc(aInvocationInfo.aParamTypes.getLength()); + Any* pParams = params.getArray(); + for (int i = pdispparams->cArgs; i < aInvocationInfo.aParamTypes.getLength(); ++i) + pParams[i] = Any(); + } + ret= doInvoke(pdispparams, pvarResult, pexcepinfo, puArgErr, d.name, params); } |