Landing fix for bug 310097. XPCDispConvert will not convert SAFEARRAY of VARIANT. Patch by gdavis@nsisoftware.com, r=dbradley@gmail.com, sr=jst@mozilla.org

This commit is contained in:
jst%mozilla.jstenback.com 2006-01-31 01:38:52 +00:00
parent 33065cba6e
commit 4175562ab2

View File

@ -404,10 +404,18 @@ JSBool XPCDispConvert::COMArrayToJSArray(XPCCallContext& ccx,
jsval val;
for(long index = lbound; index <= ubound; ++index)
{
// Devine the type of our array
HRESULT hr;
_variant_t var;
var.vt = vartype;
if(FAILED(SafeArrayGetElement(src.parray, &index, &var.byref)))
if(vartype == VT_VARIANT)
{
hr = SafeArrayGetElement(src.parray, &index, &var);
}
else
{
var.vt = vartype;
hr = SafeArrayGetElement(src.parray, &index, &var.byref);
}
if(FAILED(hr))
{
err = NS_ERROR_FAILURE;
return JS_FALSE;