diff --git a/accessible/src/base/nsAccessibilityService.cpp b/accessible/src/base/nsAccessibilityService.cpp
index a878a87f21895bcd468832fbed8fa0172a6e92af..e91a5842ebc5c90b714c8e92b571a143cca96975 100644
--- a/accessible/src/base/nsAccessibilityService.cpp
+++ b/accessible/src/base/nsAccessibilityService.cpp
@@ -1385,8 +1385,14 @@ NS_IMETHODIMP nsAccessibilityService::GetAccessible(nsIDOMNode *aNode,
     }
 
     if (tryFrame) {
-      if (frame->GetType() != nsAccessibilityAtoms::placeholderFrame &&
-          frame->GetRect().IsEmpty()) {
+      // Do not create accessible object subtrees for non-rendered table captions.
+      // This could not be done in nsTableCaptionFrame::GetAccessible() because the
+      // descendants of the table caption would still be created.
+      // By setting *aIsHidden = PR_TRUE we ensure that no descendant accessibles are created
+      if (frame->GetType() == nsAccessibilityAtoms::tableCaptionFrame &&
+         frame->GetRect().IsEmpty()) {
+        // XXX This is not the ideal place for this code, but right now there is 
+        // no better place:
         *aIsHidden = PR_TRUE;
         return NS_OK;
       }