Bug 1319640: Ensure that a11y::ChildrenEnumVariant does not output bad native accessible pointers; r=tbsaunde

MozReview-Commit-ID: l0RDW9zDOo
This commit is contained in:
Aaron Klotz 2016-12-03 15:42:21 -07:00
parent 9ba87d3afb
commit 06963d6828

View File

@ -32,13 +32,24 @@ ChildrenEnumVariant::Next(ULONG aCount, VARIANT FAR* aItems,
return CO_E_OBJNOTCONNECTED;
ULONG countFetched = 0;
for (; mCurAcc && countFetched < aCount; countFetched++) {
while (mCurAcc && countFetched < aCount) {
VariantInit(aItems + countFetched);
aItems[countFetched].pdispVal = AccessibleWrap::NativeAccessible(mCurAcc);
aItems[countFetched].vt = VT_DISPATCH;
mCurIndex++;
IDispatch* accNative = AccessibleWrap::NativeAccessible(mCurAcc);
++mCurIndex;
mCurAcc = mAnchorAcc->GetChildAt(mCurIndex);
// Don't output the accessible and count it as having been fetched unless
// it is non-null
MOZ_ASSERT(accNative);
if (!accNative) {
continue;
}
aItems[countFetched].pdispVal = accNative;
aItems[countFetched].vt = VT_DISPATCH;
++countFetched;
}
(*aCountFetched) = countFetched;