mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
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
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
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>
|
Mon Feb 28 11:18:24 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
|
||||||
|
|
||||||
* tree.c: Changed xmlSearchNsByHref to call xmlNsInScope with
|
* tree.c: Changed xmlSearchNsByHref to call xmlNsInScope with
|
||||||
|
@ -156,7 +156,7 @@ tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TES
|
|||||||
valgrind:
|
valgrind:
|
||||||
@echo '## Running the regression tests under Valgrind'
|
@echo '## Running the regression tests under Valgrind'
|
||||||
@echo '## Go get a cup of coffee it is gonna take a while ...'
|
@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)
|
APItests: testapi$(EXEEXT)
|
||||||
@echo "## Running the API regression tests this may take a little while"
|
@echo "## Running the API regression tests this may take a little while"
|
||||||
|
@ -95,7 +95,7 @@ reader3_DEPENDENCIES= $(DEPS)
|
|||||||
reader3_LDADD= @RDL_LIBS@ $(LDADDS)
|
reader3_LDADD= @RDL_LIBS@ $(LDADDS)
|
||||||
|
|
||||||
valgrind:
|
valgrind:
|
||||||
$(MAKE) CHECKER='valgrind -q' tests
|
$(MAKE) CHECKER='valgrind' tests
|
||||||
|
|
||||||
tests: $(noinst_PROGRAMS)
|
tests: $(noinst_PROGRAMS)
|
||||||
@(echo '## examples regression tests')
|
@(echo '## examples regression tests')
|
||||||
|
@ -249,7 +249,7 @@ install-data-local:
|
|||||||
for example in examples:
|
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,
|
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)
|
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 + "tests: $(noinst_PROGRAMS)\n"
|
||||||
Makefile = Makefile + "\t@(echo '## examples regression tests')\n"
|
Makefile = Makefile + "\t@(echo '## examples regression tests')\n"
|
||||||
Makefile = Makefile + "\t@(echo > .memdump)\n"
|
Makefile = Makefile + "\t@(echo > .memdump)\n"
|
||||||
|
@ -344,6 +344,8 @@ def skip_function(name):
|
|||||||
# the next function is defined in libxml.c
|
# the next function is defined in libxml.c
|
||||||
if name == "xmlRelaxNGFreeValidCtxt":
|
if name == "xmlRelaxNGFreeValidCtxt":
|
||||||
return 1
|
return 1
|
||||||
|
if name == "xmlFreeValidCtxt":
|
||||||
|
return 1
|
||||||
#
|
#
|
||||||
# Those are skipped because the Const version is used of the bindings
|
# Those are skipped because the Const version is used of the bindings
|
||||||
# instead.
|
# instead.
|
||||||
|
@ -1858,6 +1858,31 @@ libxml_xmlSetValidErrors(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
|
|||||||
return (py_retval);
|
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 *
|
* Per xmlTextReader error handler *
|
||||||
@ -3618,6 +3643,7 @@ static PyMethodDef libxmlMethods[] = {
|
|||||||
{(char *) "doc", libxml_doc, METH_VARARGS, NULL},
|
{(char *) "doc", libxml_doc, METH_VARARGS, NULL},
|
||||||
{(char *) "xmlNewNode", libxml_xmlNewNode, METH_VARARGS, NULL},
|
{(char *) "xmlNewNode", libxml_xmlNewNode, METH_VARARGS, NULL},
|
||||||
{(char *)"xmlSetValidErrors", libxml_xmlSetValidErrors, METH_VARARGS, NULL},
|
{(char *)"xmlSetValidErrors", libxml_xmlSetValidErrors, METH_VARARGS, NULL},
|
||||||
|
{(char *)"xmlFreeValidCtxt", libxml_xmlFreeValidCtxt, METH_VARARGS, NULL},
|
||||||
#ifdef LIBXML_OUTPUT_ENABLED
|
#ifdef LIBXML_OUTPUT_ENABLED
|
||||||
{(char *) "serializeNode", libxml_serializeNode, METH_VARARGS, NULL},
|
{(char *) "serializeNode", libxml_serializeNode, METH_VARARGS, NULL},
|
||||||
{(char *) "saveNodeTo", libxml_saveNodeTo, METH_VARARGS, NULL},
|
{(char *) "saveNodeTo", libxml_saveNodeTo, METH_VARARGS, NULL},
|
||||||
|
@ -37,7 +37,8 @@ PYTESTS= \
|
|||||||
sync.py \
|
sync.py \
|
||||||
tstLastError.py \
|
tstLastError.py \
|
||||||
indexes.py \
|
indexes.py \
|
||||||
dtdvalid.py
|
dtdvalid.py \
|
||||||
|
tstmem.py
|
||||||
|
|
||||||
XMLS= \
|
XMLS= \
|
||||||
tst.xml \
|
tst.xml \
|
||||||
|
36
python/tests/tstmem.py
Executable file
36
python/tests/tstmem.py
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/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:
|
valgrind:
|
||||||
-@(if [ -x $(PYTHON) ] ; then \
|
-@(if [ -x $(PYTHON) ] ; then \
|
||||||
echo '## Running the regression tests under Valgrind' ; \
|
echo '## Running the regression tests under Valgrind' ; \
|
||||||
$(MAKE) CHECKER='valgrind -q' MAKEFLAGS+=--silent pytests ; fi);
|
$(MAKE) CHECKER='valgrind' MAKEFLAGS+=--silent pytests ; fi);
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(PYSCRIPTS) test.log
|
rm -f $(PYSCRIPTS) test.log
|
||||||
|
Reference in New Issue
Block a user