Skip to content

Commit d6c0d58

Browse files
committed
Fix a few fragment case bugs that cause exceptions to be thrown (I still know of one more, which causes an infinite loop, but that's a spec bug).
1 parent 89dc1a5 commit d6c0d58

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/html5lib/html5parser.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,7 @@ def startTagBody(self, token):
960960

961961
def startTagFrameset(self, token):
962962
self.parser.parseError("unexpected-start-tag", {"name": "frameset"})
963-
if (self.tree.openElements[1].name != "body" or len(self.tree.openElements) == 1):
963+
if (len(self.tree.openElements) == 1 or self.tree.openElements[1].name != "body"):
964964
assert self.parser.innerHTML
965965
elif not self.parser.framesetOK:
966966
pass
@@ -1566,9 +1566,12 @@ def clearStackToTableContext(self):
15661566

15671567
def getCurrentTable(self):
15681568
i = -1
1569-
while self.tree.openElements[i].name != "table":
1569+
while -i <= len(self.tree.openElements) and self.tree.openElements[i].name != "table":
15701570
i -= 1
1571-
return self.tree.openElements[i]
1571+
if -i > len(self.tree.openElements):
1572+
return self.tree.openElements[0]
1573+
else:
1574+
return self.tree.openElements[i]
15721575

15731576
# processing methods
15741577
def processEOF(self):
@@ -2149,7 +2152,7 @@ def processEOF(self):
21492152
if self.tree.openElements[-1].name != "html":
21502153
self.parser.parseError("eof-in-select")
21512154
else:
2152-
assert self.parser.innerHtml
2155+
assert self.parser.innerHTML
21532156

21542157
def processCharacters(self, token):
21552158
self.tree.insertText(token["data"])

0 commit comments

Comments
 (0)