summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_pyexpat.py10
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/pyexpat.c2
3 files changed, 14 insertions, 1 deletions
diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py
index 27eecb8..117bda0 100644
--- a/Lib/test/test_pyexpat.py
+++ b/Lib/test/test_pyexpat.py
@@ -641,6 +641,16 @@ class ForeignDTDTests(unittest.TestCase):
parser.Parse("<?xml version='1.0'?><element/>")
self.assertEqual(handler_call_args, [(None, None)])
+ # test UseForeignDTD() is equal to UseForeignDTD(True)
+ handler_call_args[:] = []
+
+ parser = expat.ParserCreate()
+ parser.UseForeignDTD()
+ parser.SetParamEntityParsing(expat.XML_PARAM_ENTITY_PARSING_ALWAYS)
+ parser.ExternalEntityRefHandler = resolve_entity
+ parser.Parse("<?xml version='1.0'?><element/>")
+ self.assertEqual(handler_call_args, [(None, None)])
+
def test_ignore_use_foreign_dtd(self):
"""
If UseForeignDTD is passed True and a document with an external
diff --git a/Misc/NEWS b/Misc/NEWS
index 9907a48..a67f7c5 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -71,6 +71,9 @@ Library
Extension Modules
-----------------
+- Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD()
+ method doesn't require an argument again.
+
Tests
-----
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
index bd27268..3f59f0f 100644
--- a/Modules/pyexpat.c
+++ b/Modules/pyexpat.c
@@ -1035,7 +1035,7 @@ xmlparse_UseForeignDTD(xmlparseobject *self, PyObject *args)
{
int flag = 1;
enum XML_Error rc;
- if (!PyArg_ParseTuple(args, "p:UseForeignDTD", &flag))
+ if (!PyArg_ParseTuple(args, "|p:UseForeignDTD", &flag))
return NULL;
rc = XML_UseForeignDTD(self->itself, flag ? XML_TRUE : XML_FALSE);
if (rc != XML_ERROR_NONE) {