diff -U 3 -dHrN a/libcomps/src/comps_parse.c b/libcomps/src/comps_parse.c --- a/libcomps/src/comps_parse.c 2022-09-09 13:55:00.000000000 +0200 +++ b/libcomps/src/comps_parse.c 2023-10-04 14:00:50.722561035 +0200 @@ -176,21 +176,21 @@ } void __comps_after_parse(COMPS_Parsed *parsed) { - if (parsed->doctype_name) { + if (parsed->doctype_name && parsed->comps_doc) { COMPS_OBJECT_DESTROY(parsed->comps_doc->doctype_name); parsed->comps_doc->doctype_name = (COMPS_Str*) COMPS_OBJECT_INCREF(parsed->doctype_name); } else { //parsed->comps_doc->doctype_name = comps_str(comps_default_doctype_name); } - if (parsed->doctype_sysid) { + if (parsed->doctype_sysid && parsed->comps_doc) { COMPS_OBJECT_DESTROY(parsed->comps_doc->doctype_sysid); parsed->comps_doc->doctype_sysid = (COMPS_Str*) COMPS_OBJECT_INCREF(parsed->doctype_sysid); } else { //parsed->comps_doc->doctype_sysid = comps_str(comps_default_doctype_sysid); } - if (parsed->doctype_pubid) { + if (parsed->doctype_pubid && parsed->comps_doc) { COMPS_OBJECT_DESTROY(parsed->comps_doc->doctype_pubid); parsed->comps_doc->doctype_pubid = (COMPS_Str*) COMPS_OBJECT_INCREF(parsed->doctype_pubid); diff -U 3 -dHrN a/libcomps/src/python/tests/__test.py b/libcomps/src/python/tests/__test.py --- a/libcomps/src/python/tests/__test.py 2023-10-04 14:00:25.970189009 +0200 +++ b/libcomps/src/python/tests/__test.py 2023-10-04 14:00:50.723080381 +0200 @@ -1270,5 +1270,14 @@ #suite = unittest.TestLoader().loadTestsFromTestCase(EnvListTest) #MyRunner(verbosity=2).run(suite) + VALID_XML_HEADER_NO_COMPS = """ + + + """ + comps6 = libcomps.Comps() + ret = comps6.fromxml_str(str(VALID_XML_HEADER_NO_COMPS)) + # return code 1 is non fatal error + self.assertTrue(ret == 1, comps6.get_last_errors()) +