From: Martin v. Löwis Date: Thu, 22 Mar 2001 15:34:02 +0000 (+0000) Subject: Synchronize with 1.6 of PyXML: X-Git-Tag: v2.1b2~76 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b374dd3a818463592fa3ee8eb38f32b12d6e4a21;p=python Synchronize with 1.6 of PyXML: Retrieve relevant information at construction time, as it may be lost when the exception is printed. --- diff --git a/Lib/xml/sax/_exceptions.py b/Lib/xml/sax/_exceptions.py index e23b5f4535..7f128f6949 100644 --- a/Lib/xml/sax/_exceptions.py +++ b/Lib/xml/sax/_exceptions.py @@ -61,14 +61,22 @@ class SAXParseException(SAXException): SAXException.__init__(self, msg, exception) self._locator = locator + # We need to cache this stuff at construction time. + # If this exception is thrown, the objects through which we must + # traverse to get this information may be deleted by the time + # it gets caught. + self._systemId = self._locator.getSystemId() + self._colnum = self._locator.getColumnNumber() + self._linenum = self._locator.getLineNumber() + def getColumnNumber(self): """The column number of the end of the text where the exception occurred.""" - return self._locator.getColumnNumber() + return self._colnum def getLineNumber(self): "The line number of the end of the text where the exception occurred." - return self._locator.getLineNumber() + return self._linenum def getPublicId(self): "Get the public identifier of the entity where the exception occurred." @@ -76,7 +84,7 @@ class SAXParseException(SAXException): def getSystemId(self): "Get the system identifier of the entity where the exception occurred." - return self._locator.getSystemId() + return self._systemId def __str__(self): "Create a string representation of the exception."