You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.9 KiB
54 lines
1.9 KiB
diff --git a/Include/pyexpat.h b/Include/pyexpat.h |
|
index 5340ef5..3fc5fa5 100644 |
|
--- a/Include/pyexpat.h |
|
+++ b/Include/pyexpat.h |
|
@@ -3,7 +3,7 @@ |
|
|
|
/* note: you must import expat.h before importing this module! */ |
|
|
|
-#define PyExpat_CAPI_MAGIC "pyexpat.expat_CAPI 1.0" |
|
+#define PyExpat_CAPI_MAGIC "pyexpat.expat_CAPI 1.1" |
|
#define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI" |
|
|
|
struct PyExpat_CAPI |
|
@@ -43,6 +43,8 @@ struct PyExpat_CAPI |
|
XML_Parser parser, XML_UnknownEncodingHandler handler, |
|
void *encodingHandlerData); |
|
void (*SetUserData)(XML_Parser parser, void *userData); |
|
+ /* might be none for expat < 2.1.0 */ |
|
+ int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt); |
|
/* always add new stuff to the end! */ |
|
}; |
|
|
|
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c |
|
index 379aa01..ce62081 100644 |
|
--- a/Modules/_elementtree.c |
|
+++ b/Modules/_elementtree.c |
|
@@ -2500,6 +2500,11 @@ xmlparser(PyObject* self_, PyObject* args, PyObject* kw) |
|
PyErr_NoMemory(); |
|
return NULL; |
|
} |
|
+ /* expat < 2.1.0 has no XML_SetHashSalt() */ |
|
+ if (EXPAT(SetHashSalt) != NULL) { |
|
+ EXPAT(SetHashSalt)(self->parser, |
|
+ (unsigned long)_Py_HashSecret.prefix); |
|
+ } |
|
|
|
/* setup target handlers */ |
|
if (!target) { |
|
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c |
|
index f269113..147b8a9 100644 |
|
--- a/Modules/pyexpat.c |
|
+++ b/Modules/pyexpat.c |
|
@@ -2037,6 +2037,11 @@ MODULE_INITFUNC(void) |
|
capi.SetProcessingInstructionHandler = XML_SetProcessingInstructionHandler; |
|
capi.SetUnknownEncodingHandler = XML_SetUnknownEncodingHandler; |
|
capi.SetUserData = XML_SetUserData; |
|
+#if XML_COMBINED_VERSION >= 20100 |
|
+ capi.SetHashSalt = XML_SetHashSalt; |
|
+#else |
|
+ capi.SetHashSalt = NULL; |
|
+#endif |
|
|
|
/* export using capsule */ |
|
capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL);
|
|
|