13ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard#!/usr/bin/python -u 23ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardimport sys 33ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardimport libxml2 43ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard 54e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard# Memory debug specific 64e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardlibxml2.debugMemory(1) 74e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard 83ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt = libxml2.createPushParser(None, "<foo", 4, "test.xml") 93ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt.parseChunk("/>", 2, 1) 103ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillarddoc = ctxt.doc() 113ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt=None 123ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardif doc.name != "test.xml": 132cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard print("document name error") 143ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard sys.exit(1) 153ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardroot = doc.children 163ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardif root.name != "foo": 172cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard print("root element name error") 183ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard sys.exit(1) 193ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillarddoc.freeDoc() 203ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardi = 10000 213ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardwhile i > 0: 223ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard ctxt = libxml2.createPushParser(None, "<foo", 4, "test.xml") 233ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard ctxt.parseChunk("/>", 2, 1) 243ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard doc = ctxt.doc() 253ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard doc.freeDoc() 263ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard i = i -1 273ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt=None 284e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard 294e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard# Memory debug specific 304e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardlibxml2.cleanupParser() 314e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardif libxml2.debugMemory(1) == 0: 322cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard print("OK") 334e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardelse: 342cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 354e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard libxml2.dumpMemory() 36