[Libreoffice-commits] core.git: extensions/source

Tor Lillqvist tml at collabora.com
Wed Feb 21 13:01:11 UTC 2018


 extensions/source/ole/unoobjw.cxx |   11 +++++++++++
 1 file changed, 11 insertions(+)

New commits:
commit 3cd3d1044d03fdb733922bad74254f3ad65d898e
Author: Tor Lillqvist <tml at collabora.com>
Date:   Thu Feb 8 21:57:22 2018 +0200

    Pass missing (hopefully optional) parameters as Any()
    
    Change-Id: I93e69e589cd81fbc9606b1b08233da7fb8f5d043
    Reviewed-on: https://gerrit.libreoffice.org/50089
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Tor Lillqvist <tml at collabora.com>

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);
                     }


More information about the Libreoffice-commits mailing list