]> granicus.if.org Git - python/commitdiff
Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD()
authorChristian Heimes <christian@cheimes.de>
Mon, 24 Sep 2012 11:17:08 +0000 (13:17 +0200)
committerChristian Heimes <christian@cheimes.de>
Mon, 24 Sep 2012 11:17:08 +0000 (13:17 +0200)
method doesn't require an argument again.

Lib/test/test_pyexpat.py
Misc/NEWS
Modules/pyexpat.c

index 27eecb8d8387c5e93adf6844459a750540117c7b..117bda0c9d5f1526e64731124aa5c208d5ebebb7 100644 (file)
@@ -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
index 57ed006fa762729bbb47b1fde7d206d918315be1..3283117d6199dab07fcbbf8abc8a1140257a9f5e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -482,6 +482,9 @@ Library
 Extension Modules
 -----------------
 
+- Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD()
+  method doesn't require an argument again.
+
 - Issue #15676: Now "mmap" check for empty files before doing the
   offset check.  Patch by Steven Willis.
 
index c965ff4aa0c253942f0513f2fed8f6b7b6ce8dda..4b9687a051ec81a81d225a1335541539b28db9ae 100644 (file)
@@ -1035,7 +1035,7 @@ xmlparse_UseForeignDTD(xmlparseobject *self, PyObject *args)
     PyObject *flagobj = NULL;
     int flag = 1;
     enum XML_Error rc;
-    if (!PyArg_ParseTuple(args, "O:UseForeignDTD", &flagobj))
+    if (!PyArg_ParseTuple(args, "|O:UseForeignDTD", &flagobj))
         return NULL;
     if (flagobj != NULL) {
         flag = PyObject_IsTrue(flagobj);