summaryrefslogtreecommitdiff
path: root/extensions/source/ole/oleobjw.cxx
diff options
context:
space:
mode:
authorJoachim Lingner <jl@openoffice.org>2000-10-13 14:26:06 +0000
committerJoachim Lingner <jl@openoffice.org>2000-10-13 14:26:06 +0000
commit7708ce9f9fff08be51b9c5fe59877689bce62477 (patch)
tree4ee661ff3460ef5a569b9eda43ccb428ae7c2339 /extensions/source/ole/oleobjw.cxx
parent031abfd1653b98006dd95ef7c6a7177b2405ec92 (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.cxx16
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]))