Fixes 64 bit address conversion in proxy. Also fixes proxing char parameters. p=jband, r=dougt, a=brendan. 52200, 26560.
git-svn-id: svn://10.0.0.236/trunk@80714 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
05eeb8f1be
commit
573d163e56
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user