summaryrefslogtreecommitdiff
path: root/extensions/source/ole/unoobjw.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/ole/unoobjw.cxx')
-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 ba2b2fd0ceea..a9d2a4a4cd06 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);
}