1 #!/usr/bin/python -u 2 import sys 3 import libxml2 4 try: 5 import StringIO 6 str_io = StringIO.StringIO 7 except: 8 import io 9 str_io = io.StringIO 10 11 # Memory debug specific 12 libxml2.debugMemory(1) 13 14 def myResolver(URL, ID, ctxt): 15 return(str_io("<foo/>")) 16 17 libxml2.setEntityLoader(myResolver) 18 19 doc = libxml2.parseFile("doesnotexist.xml") 20 root = doc.children 21 if root.name != "foo": 22 print("root element name error") 23 sys.exit(1) 24 doc.freeDoc() 25 26 i = 0 27 while i < 5000: 28 doc = libxml2.parseFile("doesnotexist.xml") 29 root = doc.children 30 if root.name != "foo": 31 print("root element name error") 32 sys.exit(1) 33 doc.freeDoc() 34 i = i + 1 35 36 37 # Memory debug specific 38 libxml2.cleanupParser() 39 if libxml2.debugMemory(1) == 0: 40 print("OK") 41 else: 42 print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 43 libxml2.dumpMemory() 44 45