mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-20 03:52:25 +03:00
Added an XPath object cache. It sits on an xmlXPathContext and need to be
* xpath.c include/libxml/xpath.h: Added an XPath object cache. It sits on an xmlXPathContext and need to be explicitely activated (or deactivated again) with xmlXPathContextSetObjectCache(). The cache consists of 5 lists for node-set, string, number, boolean and misc XPath objects. Internally the xpath.c module will use object- deposition and -acquisition functions which will try to reuse as many XPath objects as possible, and fallback to normal free/create behaviour if no cache is available or if the cache is full. * runsuite.c: Adjusted to deactivate the cache for XML Schema tests if a cache-creation is turned on by default for the whole library, e.g. for testing purposes of the cache. It is deactivated here in order to avoid confusion of the memory leak detection in runsuite.c.
This commit is contained in:
11
runsuite.c
11
runsuite.c
@@ -225,6 +225,16 @@ initializeLibxml2(void) {
|
||||
xmlInitParser();
|
||||
xmlSetExternalEntityLoader(testExternalEntityLoader);
|
||||
ctxtXPath = xmlXPathNewContext(NULL);
|
||||
/*
|
||||
* Deactivate the cache if created; otherwise we have to create/free it
|
||||
* for every test, since it will confuse the memory leak detection.
|
||||
* Note that normally this need not be done, since the cache is not
|
||||
* created until set explicitely with xmlXPathContextSetObjectCache();
|
||||
* but for test purposes it is sometimes usefull to activate the
|
||||
* cache by default for the whole library.
|
||||
*/
|
||||
if (ctxtXPath->objCache != NULL)
|
||||
xmlXPathContextSetObjectCache(ctxtXPath, 0, -1, 0);
|
||||
/* used as default nanemspace in xstc tests */
|
||||
xmlXPathRegisterNs(ctxtXPath, BAD_CAST "ts", BAD_CAST "TestSuite");
|
||||
xmlXPathRegisterNs(ctxtXPath, BAD_CAST "xlink",
|
||||
@@ -1158,7 +1168,6 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
|
||||
printf("Total %d tests, %d errors, %d leaks\n",
|
||||
nb_tests, nb_errors, nb_leaks);
|
||||
}
|
||||
|
||||
xmlXPathFreeContext(ctxtXPath);
|
||||
xmlCleanupParser();
|
||||
xmlMemoryDump();
|
||||
|
Reference in New Issue
Block a user