summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2018-02-08 21:57:22 +0200
committerAndras Timar <andras.timar@collabora.com>2018-03-25 21:21:53 +0200
commit2e62bed6cc29fa28cfa9f0d7dfaf8ece61c08061 (patch)
treefe493c4a2060122da2ad6c9773dc705f9a715a09
parentac774a96399228dc869b50f9f938aebb8b476313 (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.cxx11
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);
}