summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1998-12-07 21:59:56 (GMT)
committerGuido van Rossum <guido@python.org>1998-12-07 21:59:56 (GMT)
commitf484a3366b2e0e40b0577d652407f9b84a0ec208 (patch)
tree2a9c30903e231f9ae4737dddafc4eea8ee89dc0d /Lib
parent926f7b66153a74ae20b666be137ddfb87e375c2e (diff)
downloadcpython-f484a3366b2e0e40b0577d652407f9b84a0ec208.zip
cpython-f484a3366b2e0e40b0577d652407f9b84a0ec208.tar.gz
cpython-f484a3366b2e0e40b0577d652407f9b84a0ec208.tar.bz2
Sjoerd writes:
When literal mode is entered it should exit automatically when the matching close tag of the last unclosed open tag is encountered. This patch fixes this.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/xmllib.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/Lib/xmllib.py b/Lib/xmllib.py
index 06dc373..4e62ae5 100644
--- a/Lib/xmllib.py
+++ b/Lib/xmllib.py
@@ -205,7 +205,6 @@ class XMLParser:
if k < 0: break
self.lineno = self.lineno + string.count(rawdata[i:k], '\n')
i = k
- self.literal = 0
continue
if commentopen.match(rawdata, i):
if self.literal:
@@ -503,11 +502,19 @@ class XMLParser:
return -1
res = tagfind.match(rawdata, i+2)
if res is None:
+ if self.literal:
+ self.handle_data(rawdata[i])
+ return i+1
self.syntax_error('no name specified in end tag')
tag = ''
k = i+2
else:
tag = res.group(0)
+ if self.literal:
+ if not self.stack or tag != self.stack[-1]:
+ self.handle_data(rawdata[i])
+ return i+1
+ self.literal = 0
k = res.end(0)
if endbracket.match(rawdata, k) is None:
self.syntax_error('garbage in end tag')