@@ -1084,21 +1084,7 @@ xmlparse_ExternalEntityParserCreate(xmlparseobject *self, PyObject *args)
10841084 return NULL ;
10851085 new_parser -> buffer_size = self -> buffer_size ;
10861086 new_parser -> buffer_used = 0 ;
1087- if (self -> buffer != NULL ) {
1088- new_parser -> buffer = malloc (new_parser -> buffer_size );
1089- if (new_parser -> buffer == NULL ) {
1090- #ifndef Py_TPFLAGS_HAVE_GC
1091- /* Code for versions 2.0 and 2.1 */
1092- PyObject_Del (new_parser );
1093- #else
1094- /* Code for versions 2.2 and later. */
1095- PyObject_GC_Del (new_parser );
1096- #endif
1097- return PyErr_NoMemory ();
1098- }
1099- }
1100- else
1101- new_parser -> buffer = NULL ;
1087+ new_parser -> buffer = NULL ;
11021088 new_parser -> returns_unicode = self -> returns_unicode ;
11031089 new_parser -> ordered_attributes = self -> ordered_attributes ;
11041090 new_parser -> specified_attributes = self -> specified_attributes ;
@@ -1120,6 +1106,14 @@ xmlparse_ExternalEntityParserCreate(xmlparseobject *self, PyObject *args)
11201106 return PyErr_NoMemory ();
11211107 }
11221108
1109+ if (self -> buffer != NULL ) {
1110+ new_parser -> buffer = malloc (new_parser -> buffer_size );
1111+ if (new_parser -> buffer == NULL ) {
1112+ Py_DECREF (new_parser );
1113+ return PyErr_NoMemory ();
1114+ }
1115+ }
1116+
11231117 XML_SetUserData (new_parser -> itself , (void * )new_parser );
11241118
11251119 /* allocate and clear handlers first */
@@ -1310,6 +1304,8 @@ newxmlparseobject(char *encoding, char *namespace_separator, PyObject *intern)
13101304 self -> in_callback = 0 ;
13111305 self -> ns_prefixes = 0 ;
13121306 self -> handlers = NULL ;
1307+ self -> intern = intern ;
1308+ Py_XINCREF (self -> intern );
13131309 if (namespace_separator != NULL ) {
13141310 self -> itself = XML_ParserCreateNS (encoding , * namespace_separator );
13151311 }
@@ -1327,8 +1323,6 @@ newxmlparseobject(char *encoding, char *namespace_separator, PyObject *intern)
13271323 XML_SetHashSalt (self -> itself ,
13281324 (unsigned long )_Py_HashSecret .prefix );
13291325#endif
1330- self -> intern = intern ;
1331- Py_XINCREF (self -> intern );
13321326#ifdef Py_TPFLAGS_HAVE_GC
13331327 PyObject_GC_Track (self );
13341328#else
0 commit comments