Index: src/html5lib/treebuilders/_base.py
===================================================================
--- src/html5lib/treebuilders/_base.py	(revision 1265)
+++ src/html5lib/treebuilders/_base.py	(working copy)
@@ -291,18 +291,17 @@
         for elm in self.openElements[::-1]:
             if elm.name == "table":
                 lastTable = elm
+            elif lastTable is not None:
+                fosterParent = elm
                 break
-        if lastTable:
-            # XXX - we should really check that this parent is actually a
-            # node here
-            if lastTable.parent:
-                fosterParent = lastTable.parent
-                insertBefore = lastTable
-            else:
-                fosterParent = self.openElements[
-                    self.openElements.index(lastTable) - 1]
         else:
+            # TODO: assert fragment case
             fosterParent = self.openElements[0]
+            assert fosterParent.name == 'html'
+
+        if lastTable and lastTable.parent is fosterParent:
+            insertBefore = lastTable
+
         return fosterParent, insertBefore
 
     def generateImpliedEndTags(self, exclude=None):
