diff options
author | Joachim Lingner <jl@openoffice.org> | 2000-10-13 14:26:06 +0000 |
---|---|---|
committer | Joachim Lingner <jl@openoffice.org> | 2000-10-13 14:26:06 +0000 |
commit | 7708ce9f9fff08be51b9c5fe59877689bce62477 (patch) | |
tree | 4ee661ff3460ef5a569b9eda43ccb428ae7c2339 /extensions/source/ole/oleobjw.cxx | |
parent | 031abfd1653b98006dd95ef7c6a7177b2405ec92 (diff) |
invokeWithDispidComTlb didn't process in parameter with VT_BYREF properly
Diffstat (limited to 'extensions/source/ole/oleobjw.cxx')
-rw-r--r-- | extensions/source/ole/oleobjw.cxx | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/extensions/source/ole/oleobjw.cxx b/extensions/source/ole/oleobjw.cxx index a65cbfc10..306489be6 100644 --- a/extensions/source/ole/oleobjw.cxx +++ b/extensions/source/ole/oleobjw.cxx @@ -2,9 +2,9 @@ * * $RCSfile: oleobjw.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: jl $ $Date: 2000-10-12 13:02:20 $ + * last change: $Author: jl $ $Date: 2000-10-13 15:26:06 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1283,8 +1283,15 @@ Any IUnknownWrapper_Impl::invokeWithDispIdComTlb(DISPID dispID, ! (m_seqCurrentParamTypes[i] & PARAMFLAG_FOUT)) { if( m_seqCurrentVartypes[i] & VT_BYREF) + { anyToVariant( &arRefArgs[revIndex], Params.getConstArray()[i], m_seqCurrentVartypes[i]); + arArgs[revIndex].vt= m_seqCurrentVartypes[i]; + if( (m_seqCurrentVartypes[i] & 0x0fff ) == VT_VARIANT) + arArgs[revIndex].byref= &arRefArgs[revIndex]; + else + arArgs[revIndex].byref= &arRefArgs[revIndex].byref; + } else anyToVariant( &arArgs[revIndex], Params.getConstArray()[i], m_seqCurrentVartypes[i]); @@ -1297,7 +1304,7 @@ Any IUnknownWrapper_Impl::invokeWithDispIdComTlb(DISPID dispID, result = m_pDispatch->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT, - DISPATCH_METHOD | DISPATCH_PROPERTYGET, + DISPATCH_METHOD, &dispparams, &varResult, &excepinfo, @@ -1472,6 +1479,9 @@ sal_Bool IUnknownWrapper_Impl::getParameterInfo() { sal_Int32 flags= funcDesc->lprgelemdescParam[iparams].paramdesc.wParamFlags; m_seqCurrentParamTypes[iparams]= flags & ( PARAMFLAG_FIN | PARAMFLAG_FOUT); + // default is PARAMFLAG_IN + if( m_seqCurrentParamTypes[iparams] == 0) + m_seqCurrentParamTypes[iparams]= PARAMFLAG_FIN; if( ! getElementTypeDesc( & funcDesc->lprgelemdescParam[iparams].tdesc, m_seqCurrentVartypes[iparams])) |