--- svn/HTMLParser.py 2010-09-30 18:49:20.000000000 +0200
+++ fix/HTMLParser.py 2010-09-30 22:23:02.000000000 +0200
@@ -97,6 +97,7 @@
self.lasttag = '???'
self.interesting = interesting_normal
markupbase.ParserBase.reset(self)
+ self.cdata_tags = []
def feed(self, data):
"""Feed data to the parser.
@@ -270,6 +271,7 @@
else:
self.handle_starttag(tag, attrs)
if tag in self.CDATA_CONTENT_ELEMENTS:
+ self.cdata_tags.append(tag)
self.set_cdata_mode()
return endpos
@@ -316,8 +318,11 @@
if not match:
self.error("bad end tag: %r" % (rawdata[i:j],))
tag = match.group(1)
- self.handle_endtag(tag.lower())
- self.clear_cdata_mode()
+ tag = tag.lower()
+ self.handle_endtag(tag)
+ if len(self.cdata_tags) > 0 and self.cdata_tags[-1] == tag:
+ self.cdata_tags.pop()
+ self.clear_cdata_mode()
return j
# Overridable -- finish processing of start+end tag: