Fixes 64 bit address conversion in proxy. Also fixes proxing char parameters. p=jband, r=dougt, a=brendan. 52200, 26560.

This commit is contained in:
dougt%netscape.com 2000-10-08 18:19:28 +00:00
parent 53256f676b
commit aeee5aad67
2 changed files with 18 additions and 5 deletions

View File

@ -387,7 +387,11 @@ nsProxyObject::convertMiniVariantToVariant(nsXPTMethodInfo *methodInfo, nsXPTCMi
return NS_ERROR_OUT_OF_MEMORY;
for (int i = 0; i < paramCount; i++)
(*fullParam)[i].Init(params[i], methodInfo->GetParam(i).GetType());
{
const nsXPTParamInfo& paramInfo = methodInfo->GetParam(i);
uint8 flags = paramInfo.IsOut() ? nsXPTCVariant::PTR_IS_DATA : 0;
(*fullParam)[i].Init(params[i], paramInfo.GetType(), flags);
}
return NS_OK;
}

View File

@ -109,8 +109,19 @@ struct nsXPTCVariant : public nsXPTCMiniVariant
PRBool IsValInterface() const {return (PRBool) (flags & VAL_IS_IFACE);}
PRBool IsValArray() const {return (PRBool) (flags & VAL_IS_ARRAY);}
void Init(const nsXPTCMiniVariant& mv, const nsXPTType& t)
void Init(const nsXPTCMiniVariant& mv, const nsXPTType& t, PRUint8 f)
{
type = t;
flags = f;
if(f & PTR_IS_DATA)
{
ptr = mv.val.p;
val.p = nsnull;
}
else
{
ptr = nsnull;
switch(t.TagPart()) {
case nsXPTType::T_I8: val.i8 = mv.val.i8; break;
case nsXPTType::T_I16: val.i16 = mv.val.i16; break;
@ -137,9 +148,7 @@ struct nsXPTCVariant : public nsXPTCMiniVariant
case nsXPTType::T_PWSTRING_SIZE_IS: /* fall through */
default: val.p = mv.val.p; break;
}
ptr = nsnull;
type = t;
flags = 0;
}
}
};