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;
+ }
}
}
}