Commit 25c90c58 authored by Daniel Veillard's avatar Daniel Veillard

try to fix a problem with valgrind. applied memory leak fix from Brent

* Makefile.am doc/examples/Makefile.am python/tests/Makefile.am
  xstc/Makefile.am: try to fix a problem with valgrind.
* python/generator.py python/libxml.c python/tests/Makefile.am
  python/tests/tstmem.py: applied memory leak fix from Brent Hendricks
  c.f. bug #165349
Daniel
parent ba70cc0d
Wed Mar 2 11:45:18 CET 2005 Daniel Veillard <daniel@veillard.com>
* Makefile.am doc/examples/Makefile.am python/tests/Makefile.am
xstc/Makefile.am: try to fix a problem with valgrind.
* python/generator.py python/libxml.c python/tests/Makefile.am
python/tests/tstmem.py: applied memory leak fix from Brent Hendricks
c.f. bug #165349
Mon Feb 28 11:18:24 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
* tree.c: Changed xmlSearchNsByHref to call xmlNsInScope with
......
......@@ -156,7 +156,7 @@ tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TES
valgrind:
@echo '## Running the regression tests under Valgrind'
@echo '## Go get a cup of coffee it is gonna take a while ...'
$(MAKE) CHECKER='valgrind -q' tests
$(MAKE) CHECKER='valgrind' tests
APItests: testapi$(EXEEXT)
@echo "## Running the API regression tests this may take a little while"
......
......@@ -95,7 +95,7 @@ reader3_DEPENDENCIES= $(DEPS)
reader3_LDADD= @RDL_LIBS@ $(LDADDS)
valgrind:
$(MAKE) CHECKER='valgrind -q' tests
$(MAKE) CHECKER='valgrind' tests
tests: $(noinst_PROGRAMS)
@(echo '## examples regression tests')
......
......@@ -249,7 +249,7 @@ install-data-local:
for example in examples:
Makefile = Makefile + "%s_SOURCES=%s.c\n%s_LDFLAGS=\n%s_DEPENDENCIES= $(DEPS)\n%s_LDADD= @RDL_LIBS@ $(LDADDS)\n\n" % (example, example, example,
example, example)
Makefile = Makefile + "valgrind: \n\t$(MAKE) CHECKER='valgrind -q' tests\n\n"
Makefile = Makefile + "valgrind: \n\t$(MAKE) CHECKER='valgrind' tests\n\n"
Makefile = Makefile + "tests: $(noinst_PROGRAMS)\n"
Makefile = Makefile + "\t@(echo '## examples regression tests')\n"
Makefile = Makefile + "\t@(echo > .memdump)\n"
......
......@@ -344,6 +344,8 @@ def skip_function(name):
# the next function is defined in libxml.c
if name == "xmlRelaxNGFreeValidCtxt":
return 1
if name == "xmlFreeValidCtxt":
return 1
#
# Those are skipped because the Const version is used of the bindings
# instead.
......
......@@ -1858,6 +1858,31 @@ libxml_xmlSetValidErrors(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
return (py_retval);
}
PyObject *
libxml_xmlFreeValidCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
xmlValidCtxtPtr cur;
xmlValidCtxtPyCtxtPtr pyCtxt;
PyObject *pyobj_cur;
if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeValidCtxt", &pyobj_cur))
return(NULL);
cur = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_cur);
pyCtxt = (xmlValidCtxtPyCtxtPtr)(cur->userData);
if (pyCtxt != NULL)
{
Py_XDECREF(pyCtxt->error);
Py_XDECREF(pyCtxt->warn);
Py_XDECREF(pyCtxt->arg);
xmlFree(pyCtxt);
}
xmlFreeValidCtxt(cur);
Py_INCREF(Py_None);
return(Py_None);
}
/************************************************************************
* *
* Per xmlTextReader error handler *
......@@ -3618,6 +3643,7 @@ static PyMethodDef libxmlMethods[] = {
{(char *) "doc", libxml_doc, METH_VARARGS, NULL},
{(char *) "xmlNewNode", libxml_xmlNewNode, METH_VARARGS, NULL},
{(char *)"xmlSetValidErrors", libxml_xmlSetValidErrors, METH_VARARGS, NULL},
{(char *)"xmlFreeValidCtxt", libxml_xmlFreeValidCtxt, METH_VARARGS, NULL},
#ifdef LIBXML_OUTPUT_ENABLED
{(char *) "serializeNode", libxml_serializeNode, METH_VARARGS, NULL},
{(char *) "saveNodeTo", libxml_saveNodeTo, METH_VARARGS, NULL},
......
......@@ -37,7 +37,8 @@ PYTESTS= \
sync.py \
tstLastError.py \
indexes.py \
dtdvalid.py
dtdvalid.py \
tstmem.py
XMLS= \
tst.xml \
......
#!/usr/bin/python -u
import libxml2
import libxml2mod
import sys
def error(msg, data):
pass
# Memory debug specific
libxml2.debugMemory(1)
dtd="""<!ELEMENT foo EMPTY>"""
instance="""<?xml version="1.0"?>
<foo></foo>"""
dtd = libxml2.parseDTD(None, 'test.dtd')
ctxt = libxml2.newValidCtxt()
libxml2mod.xmlSetValidErrors(ctxt._o, error, error)
doc = libxml2.parseDoc(instance)
ret = doc.validateDtd(ctxt, dtd)
if ret != 1:
print "error doing DTD validation"
sys.exit(1)
doc.freeDoc()
dtd.freeDtd()
del dtd
del ctxt
# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
print "OK"
else:
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
libxml2.dumpMemory()
......@@ -94,7 +94,7 @@ tests:
valgrind:
-@(if [ -x $(PYTHON) ] ; then \
echo '## Running the regression tests under Valgrind' ; \
$(MAKE) CHECKER='valgrind -q' MAKEFLAGS+=--silent pytests ; fi);
$(MAKE) CHECKER='valgrind' MAKEFLAGS+=--silent pytests ; fi);
clean:
rm -f $(PYSCRIPTS) test.log
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment