@@ -973,21 +973,7 @@ xmlparse_ExternalEntityParserCreate(xmlparseobject *self, PyObject *args)
973973 return NULL ;
974974 new_parser -> buffer_size = self -> buffer_size ;
975975 new_parser -> buffer_used = 0 ;
976- if (self -> buffer != NULL ) {
977- new_parser -> buffer = malloc (new_parser -> buffer_size );
978- if (new_parser -> buffer == NULL ) {
979- #ifndef Py_TPFLAGS_HAVE_GC
980- /* Code for versions 2.0 and 2.1 */
981- PyObject_Del (new_parser );
982- #else
983- /* Code for versions 2.2 and later. */
984- PyObject_GC_Del (new_parser );
985- #endif
986- return PyErr_NoMemory ();
987- }
988- }
989- else
990- new_parser -> buffer = NULL ;
976+ new_parser -> buffer = NULL ;
991977 new_parser -> ordered_attributes = self -> ordered_attributes ;
992978 new_parser -> specified_attributes = self -> specified_attributes ;
993979 new_parser -> in_callback = 0 ;
@@ -1003,6 +989,13 @@ xmlparse_ExternalEntityParserCreate(xmlparseobject *self, PyObject *args)
1003989 PyObject_GC_Init (new_parser );
1004990#endif
1005991
992+ if (self -> buffer != NULL ) {
993+ new_parser -> buffer = malloc (new_parser -> buffer_size );
994+ if (new_parser -> buffer == NULL ) {
995+ Py_DECREF (new_parser );
996+ return PyErr_NoMemory ();
997+ }
998+ }
1006999 if (!new_parser -> itself ) {
10071000 Py_DECREF (new_parser );
10081001 return PyErr_NoMemory ();
0 commit comments