Index: Lib/test/test_htmlparser.py
===================================================================
--- Lib/test/test_htmlparser.py (revision 87444)
+++ Lib/test/test_htmlparser.py (working copy)
@@ -320,7 +320,12 @@
("endtag", "p"),
])
+ def test_unescape_function(self):
+ parser = HTMLParser.HTMLParser()
+ self.assertEqual(parser.unescape('bad;'),'bad;')
+ self.assertEqual(parser.unescape('&'),'&')
+
def test_main():
test_support.run_unittest(HTMLParserTestCase)
Index: Lib/HTMLParser.py
===================================================================
--- Lib/HTMLParser.py (revision 87444)
+++ Lib/HTMLParser.py (working copy)
@@ -367,13 +367,16 @@
return s
def replaceEntities(s):
s = s.groups()[0]
- if s[0] == "#":
- s = s[1:]
- if s[0] in ['x','X']:
- c = int(s[1:], 16)
- else:
- c = int(s)
- return unichr(c)
+ try:
+ if s[0] == "#":
+ s = s[1:]
+ if s[0] in ['x','X']:
+ c = int(s[1:], 16)
+ else:
+ c = int(s)
+ return unichr(c)
+ except ValueError:
+ return ''+s+';'
else:
# Cannot use name2codepoint directly, because HTMLParser supports apos,
# which is not part of HTML 4