diff --git a/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp b/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp index e4edaa1d8af..e12f3b1d88e 100644 --- a/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp +++ b/mozilla/accessible/src/html/nsHTMLSelectAccessible.cpp @@ -394,6 +394,7 @@ nsHTMLSelectListAccessible::CacheOptSiblings(nsIAccessibilityService *aAccServic PRUint32 numChildren = aParentContent->GetChildCount(); nsCOMPtr lastGoodAccessible(aLastGoodAccessible); + nsCOMPtr newAccessible; for (PRUint32 count = 0; count < numChildren; count ++) { nsIContent *childContent = aParentContent->GetChildAt(count); @@ -402,14 +403,19 @@ nsHTMLSelectListAccessible::CacheOptSiblings(nsIAccessibilityService *aAccServic } nsCOMPtr tag = childContent->Tag(); if (tag == nsAccessibilityAtoms::option || tag == nsAccessibilityAtoms::optgroup) { - lastGoodAccessible = AccessibleForOption(aAccService, - childContent, - lastGoodAccessible, - aChildCount); + newAccessible = AccessibleForOption(aAccService, + childContent, + lastGoodAccessible, + aChildCount); + if (newAccessible) { + lastGoodAccessible = newAccessible; + } if (tag == nsAccessibilityAtoms::optgroup) { - lastGoodAccessible = CacheOptSiblings(aAccService, childContent, - lastGoodAccessible, - aChildCount); + newAccessible = CacheOptSiblings(aAccService, childContent, + lastGoodAccessible, aChildCount); + if (newAccessible) { + lastGoodAccessible = newAccessible; + } } } }