Issue #6676: merge from 3.4
This commit is contained in:
commit
090eb1fd18
|
@ -100,6 +100,11 @@ The :mod:`xml.parsers.expat` module contains two functions:
|
|||
http://www.python.org/ns/ elem1
|
||||
elem2
|
||||
|
||||
Due to limitations in the ``Expat`` library used by :mod:`pyexpat`,
|
||||
the :class:`xmlparser` instance returned can only be used to parse a single
|
||||
XML document. Call ``ParserCreate`` for each document to provide unique
|
||||
parser instances.
|
||||
|
||||
|
||||
.. seealso::
|
||||
|
||||
|
@ -119,7 +124,9 @@ XMLParser Objects
|
|||
|
||||
Parses the contents of the string *data*, calling the appropriate handler
|
||||
functions to process the parsed data. *isfinal* must be true on the final call
|
||||
to this method. *data* can be the empty string at any time.
|
||||
to this method; it allows the parsing of a single file in fragments,
|
||||
not the submission of multiple files.
|
||||
*data* can be the empty string at any time.
|
||||
|
||||
|
||||
.. method:: xmlparser.ParseFile(file)
|
||||
|
|
|
@ -236,6 +236,18 @@ class ParseTest(unittest.TestCase):
|
|||
operations = out.out
|
||||
self._verify_parse_output(operations)
|
||||
|
||||
def test_parse_again(self):
|
||||
parser = expat.ParserCreate()
|
||||
file = BytesIO(data)
|
||||
parser.ParseFile(file)
|
||||
# Issue 6676: ensure a meaningful exception is raised when attempting
|
||||
# to parse more than one XML document per xmlparser instance,
|
||||
# a limitation of the Expat library.
|
||||
with self.assertRaises(expat.error) as cm:
|
||||
parser.ParseFile(file)
|
||||
self.assertEqual(expat.ErrorString(cm.exception.code),
|
||||
expat.errors.XML_ERROR_FINISHED)
|
||||
|
||||
class NamespaceSeparatorTest(unittest.TestCase):
|
||||
def test_legal(self):
|
||||
# Tests that make sure we get errors when the namespace_separator value
|
||||
|
|
|
@ -119,6 +119,11 @@ Library
|
|||
- Issue #20817: Fix inspect.getcallargs() to fail correctly if more
|
||||
than 3 arguments are missing. Patch by Jeremiah Lowin.
|
||||
|
||||
- Issue #6676: Ensure a meaningful exception is raised when attempting
|
||||
to parse more than one XML document per pyexpat xmlparser instance.
|
||||
(Original patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with
|
||||
suggested wording by David Gutteridge)
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
|
|
|
@ -908,7 +908,7 @@ xmlparse_ParseFile(xmlparseobject *self, PyObject *f)
|
|||
void *buf = XML_GetBuffer(self->itself, BUF_SIZE);
|
||||
if (buf == NULL) {
|
||||
Py_XDECREF(readmethod);
|
||||
return PyErr_NoMemory();
|
||||
return get_parse_result(self, 0);
|
||||
}
|
||||
|
||||
bytes_read = readinst(buf, BUF_SIZE, readmethod);
|
||||
|
|
Loading…
Reference in New Issue