1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-10-21 14:53:44 +03:00
Commit Graph

315 Commits

Author SHA1 Message Date
Kasimier T. Buchcik
7cb3fa9d51 Fixed self-invented a segfault in xmlXPathCtxtCompile(), when the
* xpath.c: Fixed self-invented a segfault in xmlXPathCtxtCompile(),
  when the expression was not valid and @comp was NULL and I
  tried to do the d-o-s rewrite.
2006-06-06 15:27:46 +00:00
Kasimier T. Buchcik
080152c901 Enabled the compound traversal again; I added a check to use this only if
* xpath.c: Enabled the compound traversal again; I added a
  check to use this only if the have an expression starting
  with the document node; so in the case of "//foo", we
  already know at compilation-time, that there will be only
  1 initial context node. Added the rewrite also to
  xmlXPathEvalExpr().
2006-06-06 09:42:15 +00:00
Kasimier T. Buchcik
c42e9f6409 Disabled the compound traversal for the release; I need first to assure
* xpath.c: Disabled the compound traversal for the release;
  I need first to assure that this is done only if we have
  1 initial node.
2006-06-02 20:48:50 +00:00
Aleksey Sanin
1b2be101e8 fixed memory leak in xpath error reporting
* xpath.c: fixed memory leak in xpath error reporting
2006-05-31 20:53:43 +00:00
Kasimier T. Buchcik
5869469f42 Changed the name of the recently added public function
* xpath.c include/libxml/xpath.h runsuite.c:
  Changed the name of the recently added public function
  xmlXPathContextSetObjectCache() to
  xmlXPathContextSetCache(); so a more generic one, in
  case we decide to cache more things than only XPath
  objects.
2006-05-31 12:37:28 +00:00
Kasimier T. Buchcik
df0ba26409 Optimized xmlXPathNodeCollectAndTest() and xmlXPathNodeCollectAndTestNth()
* xpath.c: Optimized xmlXPathNodeCollectAndTest() and
  xmlXPathNodeCollectAndTestNth() to evaluate a compound
  traversal of 2 axes when we have a "//foo" expression.
  This is done with a rewrite of the XPath AST in
  xmlXPathRewriteDOSExpression(); I added an additional field
  to xmlXPathStepOp for this (but the field's name should be
  changed). The mechanism: the embracing descendant-or-self
  axis traversal (also optimized to return only nodes which
  can hold elements), will produce context nodes for the
  inner traversal of the child axis. This way we avoid a full
  node-collecting traversal of the descendant-or-self axis.
  Some tests indicate that this can reduce execution time of
  "//foo" to 50%. Together with the XPath object cache this
  all significantly speeds up libxslt.
2006-05-30 19:45:37 +00:00
Kasimier T. Buchcik
75af2a87e5 Enhanced xmlXPathNodeCollectAndTest() to avoid recreation (if possible) of
* xpath.c: Enhanced xmlXPathNodeCollectAndTest() to avoid
  recreation (if possible) of the node-set which is used to
  collect the nodes in the current axis for the currect context
  node. Especially for "//foo" this will decrease dramatically
  the number of created node-sets, since for each node in the
  result node-set of the evaluation of descendant-or-self::node()
  a new temporary node-set was created. Added node iterator
  xmlXPathNextChildElement() as a tiny optimization for
  child::foo.
2006-05-30 09:29:23 +00:00
Kasimier T. Buchcik
a72484438f 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.
2006-05-29 16:15:36 +00:00
Kasimier T. Buchcik
984a9aeddf Removed a memcpy if xmlXPathNodeSetMerge(); it seems we really need to
* xpath.c: Removed a memcpy if xmlXPathNodeSetMerge(); it
  seems we really need to walk the whole list, since those
  nastly namespace nodes need to be added with
  xmlXPathNodeSetDupNs(); thus a pure memcpy is not possible.
  A flag on the node-set indicating if namespace nodes are in
  the set would help here; this is the 3rd flag which would
  be usefull with node-sets. The current flags I have in mind:
  1) Is a node-set already sorted?
     This would allow for rebust and optimizable sorting
     behaviour.
  2) Of what type are the nodes in the set (or of mixed type)?
     This would allow for faster merging of node-sets.
  3) Are namespace nodes in the set?
     This would allow to skipp all the namespace node specific
     special handling. Faster node-set merging if the first
     set is empty; just memcpy the set.
2006-05-24 09:02:35 +00:00
Kasimier T. Buchcik
5691f436d9 Optimization of count(): eliminated sorting (see bug #165547).
* xpath.c: Optimization of count(): eliminated sorting
  (see bug #165547). Optimization of XPATH_OP_FILTER if the
  predicate is a [1] (disable with XP_OPTIMIZED_FILTER_FIRST if
  it produces trouble). Tiny opt in xmlXPathNodeSetMerge().
2006-05-22 15:19:55 +00:00
Kasimier T. Buchcik
64f7e1a85f Substituted all remaining calls to xmlXPathCmpNodes() for
* xpath.c: Substituted all remaining calls to xmlXPathCmpNodes()
  for xmlXPathCmpNodesExt(). Tiny further enhancement of
  xmlXPathCmpNodesExt(). Added additional checks in various code
  parts to avoid calling sorting or merging functions if the
  node-set(s) don't need them; i.e., if they are empty or contain
  just one node.
2006-05-19 19:59:54 +00:00
Kasimier T. Buchcik
2bdabbd711 Optimized the comparison for non-element nodes in xmlXPathCmpNodesExt();
* xpath.c: Optimized the comparison for non-element nodes
  in xmlXPathCmpNodesExt(); the comparison is used for sorting
  of node-sets. This enhancement is related to bug #165547.
  There are other places where the old comparison function
  xmlXPathCmpNodes() is still called, but I currently don't
  know exactly what those calls are for; thus if they can be
  substituted (if it makes sense) for the new function.
2006-05-19 11:26:15 +00:00
Kasimier T. Buchcik
6ed2eb47fc Applied patch from Rob Richards, fixing a potential memory leak in
* xpath.c: Applied patch from Rob Richards, fixing a potential
  memory leak in xmlXPathTryStreamCompile(), when a list of
  namespaces was assigned to the XPath compilation context;
  here a new namespace list was created and passed to
  xmlPatterncompile(); but this list was not freed afterwards.
  Additionally we avoid now in xmlXPathTryStreamCompile() to
  compile the expression, if it has a colon - indicating
  prefixed name tests - and no namespace list was given. The
  streaming XPath mechanism needs a namespace list at
  compilation time (unlike normal XPath, where we can bind
  namespace names to prefixes at execution time).
* pattern.c: Enhanced to use a string dict for local-names,
  ns-prefixes and and namespace-names.
  Fixed xmlStreamPushInternal() not to use string-pointer
  comparison if a dict is available; this won't work, since
  one does not know it the given strings originate from the
  same dict - and they normally don't do, since e.g.
  namespaces are hold on xmlNs->href. I think this would be
  worth an investigation: if we can add a @doc field to xmlNs
  and put the @href in to a additionan namespace dict hold
  in xmlDoc. Daniel will surely not like this idea :-) But
  evaluation of tons of elements/attributes in namespaces
  with xmlStrEqual() isn't the way we should go forever.
2006-05-16 15:13:37 +00:00
Daniel Veillard
aac7c68e87 fix a few warning raised by gcc-4.1 and latests changes Daniel
* c14n.c encoding.c xmlschemas.c xpath.c xpointer.c: fix a few
  warning raised by gcc-4.1 and latests changes
Daniel
2006-03-10 13:40:16 +00:00
Daniel Veillard
11ce4004d8 end of first pass on coverity reports. Daniel
* runtest.c schematron.c testAutomata.c tree.c valid.c xinclude.c
  xmlcatalog.c xmlreader.c xmlregexp.c xpath.c: end of first
  pass on coverity reports.
Daniel
2006-03-10 00:36:23 +00:00
Daniel Veillard
d3ff7ef6d3 workaround HP-UX compiler bug by Rick Jones Daniel
* xpath.c: workaround HP-UX compiler bug by Rick Jones
Daniel
2006-02-27 19:43:17 +00:00
Kasimier T. Buchcik
97258713d3 Fixed bug #322928, reported by Erich Schubert: The bug was in pattern.c,
* pattern.c xpath.c include/libxml/pattern.h:
  Fixed bug #322928, reported by Erich Schubert: The bug was
  in pattern.c, which is used for a tiny subset of xpath
  expression which can be evaluated in an optimized way.
  The doc-node was never considered when evaluating "//"
  expressions. Additionally, we fixed resolution
  to nodes of any type in pattern.c; i.e. a "//." didn't work
  yet, as it did select only element-nodes. Due to this
  issue the pushing of nodes in xpath.c needed to be adjusted
  as well.
2006-01-05 12:30:43 +00:00
Daniel Veillard
b3d1491b69 prepare for release work for #303289, fix a formatting bug for MIN_INT
* configure.in doc/* configure.in: prepare for release
* xpath.c: work for #303289, fix a formatting bug for MIN_INT
Daniel
2005-09-04 20:47:39 +00:00
Daniel Veillard
f03a8cdacd fixing yet another pattern induced XPath bug #314282 reverted back last
* pattern.c xpath.c include/libxml/pattern.h: fixing yet another
  pattern induced XPath bug #314282
* relaxng.c: reverted back last change it was seriously broken
Daniel
2005-09-04 12:01:57 +00:00
Daniel Veillard
8bda20f73c removed a potentially uninitialized variable error fixed a deprecation
* xpath.c: removed a potentially uninitialized variable error
* python/generator.py: fixed a deprecation warning
* python/tests/tstLastError.py: silent the damn test when Okay !
Daniel
2005-08-24 09:36:47 +00:00
Daniel Veillard
24505b0f5c a lot of small cleanups based on Linus' sparse check output. Daniel
* HTMLparser.c SAX2.c encoding.c globals.c parser.c relaxng.c
  runsuite.c runtest.c schematron.c testHTML.c testReader.c
  testRegexp.c testSAX.c testThreads.c valid.c xinclude.c xmlIO.c
  xmllint.c xmlmodule.c xmlschemas.c xpath.c xpointer.c: a lot of
  small cleanups based on Linus' sparse check output.
Daniel
2005-07-28 23:49:35 +00:00
Daniel Veillard
ed6c54971f changed xmlPatterncompile signature to pass an int and not an enum since
* pattern.c include/libxml/pattern.h: changed xmlPatterncompile
  signature to pass an int and not an enum since it can generate
  ABI compat troubles.
* include/libxml/schematron.h schematron.c: adding the new
  schematron code, work in progress lots to be left and needing
  testing
* include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h.in
  Makefile.am configure.in: integration of schematron into the
  build
* xpath.c include/libxml/xpath.h: adding flags to control compilation
  options right now just XML_XPATH_CHECKNS.
Daniel
2005-07-23 15:00:22 +00:00
William M. Brack
32f0f717d1 Changed the behaviour of xmlXPathEqualNodeSetFloat to return TRUE if a
* xpath.c: Changed the behaviour of xmlXPathEqualNodeSetFloat to
  return TRUE if a nodeset with a numeric value of NaN is compared
  for inequality with any numeric value (bug 309914).
2005-07-14 07:00:33 +00:00
Daniel Veillard
1f33c4d61f preparing to make testsuite releases along with code source releases fixed
* xstc/Makefile.am README README.tests Makefile.tests Makefile.am:
  preparing to make testsuite releases along with code source releases
* gentest.py testapi.c: fixed a couple of problem introduced by
  the new Schemas support for Readers
* xpath.c: fixed the XPath attribute:: bug #309580, #309864 in a crude
  but simple way.
* xmlschemas.c include/libxml/tree.h: fixed a couple of problems
  raised by the doc builder.
* doc/*: made rebuild
Daniel
2005-07-10 21:38:31 +00:00
William M. Brack
ea152c05b3 Further enhancement for XPath streaming, consolidated with schemas usage
* pattern.c, xpath.c, include/libxml/pattern.h: Further
  enhancement for XPath streaming, consolidated with
  schemas usage of pattern.c.  Added a new enum
  xmlPatternFlags.
* doc/*, testapi.c, elfgcchack.h: updated to reflect new
  enum.
* test/XPath/tests/mixedpat, test/XPath/docs/mixed,
  result/XPath/mixedpat: added regression test for problems
  reported in bug306348
2005-06-09 18:12:28 +00:00
William M. Brack
fbb619f476 Enhanced xmlXPathRunStreamEval, fixed handling of depth/level for cases
* xpath.c, pattern.c: Enhanced xmlXPathRunStreamEval, fixed
  handling of depth/level for cases like union operator
  (bug #306348 reported by Bob Stayton).  Also enhanced
  several comments throughout pattern.c.
* doc/apibuild.py: fixed problem in handling of
  'signed' declaration.  Rebuilt the docs.
2005-06-06 13:49:18 +00:00
Daniel Veillard
dbfe05aff4 on linux/gcc use weak definitions to avoid linking with pthread library on
* Makefile.am configure.in threads.c: on linux/gcc use weak definitions
  to avoid linking with pthread library on non-threaded environments.
* xpath.c: applied patch from Mark Vakoc w.r.t. a buggy namespace
  list allocation.
Daniel
2005-05-04 09:18:00 +00:00
William M. Brack
3d42666362 Added some code to avoid integer overflow for ceil, floor and round
* xpath.c: Added some code to avoid integer overflow for
  ceil, floor and round functions (bug 301162)
2005-04-19 14:40:28 +00:00
William M. Brack
d6e347e865 Applied Daniel's fix for memory leak in dtd prefix (bug 300550). minor
* valid.c: Applied Daniel's fix for memory leak in dtd
  prefix (bug 300550).
* xpath.c: minor change to comment only
2005-04-15 01:34:41 +00:00
William M. Brack
2c19a7bf2e fixed several places where memory cleanup was not properly done after an
* xpath.c: fixed several places where memory cleanup was not
  properly done after an error was detected (problem was
  reported on the mailing list by Pawel Palucha)
2005-04-10 01:03:23 +00:00
Daniel Veillard
4ddaa56d7a fixed the bug in lang() as raised by Elliotte Rusty Harold added a
* xpath.c: fixed the bug in lang() as raised by Elliotte Rusty Harold
* result/XPath/tests/langsimple test/XPath/tests/langsimple
  test/XPath/docs/lang: added a regression test
Daniel
2005-04-06 14:09:08 +00:00
Daniel Veillard
5d4644ef6e revamped the elfgcchack.h format to cope with gcc4 change of aliasing
* doc/apibuild.py doc/elfgcchack.xsl: revamped the elfgcchack.h
  format to cope with gcc4 change of aliasing allowed scopes, had
  to add extra informations to doc/libxml2-api.xml to separate
  the header from the c module source.
* *.c: updated all c library files to add a #define bottom_xxx
  and reimport elfgcchack.h thereafter, and a bit of cleanups.
* doc//* testapi.c: regenerated when rebuilding the API
Daniel
2005-04-01 13:11:58 +00:00
William M. Brack
12d37ab634 fixed problem when XMLLINT_INDENT was empty (bug 168033). fixed
* xmlsave.c: fixed problem when XMLLINT_INDENT was empty (bug 168033).
* xpath.c: fixed compilation warning, no change to logic.
* xmlschemastypes.c: fixed compilation warning, no change to logic.
2005-02-21 13:54:07 +00:00
Daniel Veillard
fa1f77f2f0 fixed remaining known bugs in the XPath streaming, and switched XPath to
* pattern.c xpath.c: fixed remaining known bugs in the XPath streaming,
  and switched XPath to use it by default when possible
Daniel
2005-02-21 10:44:36 +00:00
Daniel Veillard
56de87ee0d fix the comment to describe the real return values lot of work on the
* encoding.c: fix the comment to describe the real return values
* pattern.c xpath.c include/libxml/pattern.h: lot of work on
  the patterns, pluggin in the XPath default evaluation, but
  disabled right now because it's not yet good enough for XSLT.
  pattern.h streaming API are likely to be changed to handle
  relative and absolute paths in the same expression.
Daniel
2005-02-16 00:22:29 +00:00
William M. Brack
cd65bc9a49 fixed problem with xmlXPathErr when error number subscript was out of
* xpath.c: fixed problem with xmlXPathErr when error number
  subscript was out of range (bug 163055)
2005-01-06 09:39:18 +00:00
William M. Brack
21e4ef20f6 Re-examined the problems of configuring a "minimal" library.
Synchronized the header files with the library code in order
to assure that all the various conditionals (LIBXML_xxxx_ENABLED)
were the same in both.  Modified the API database content to more
accurately reflect the conditionals.  Enhanced the generation
of that database.  Although there was no substantial change to
any of the library code's logic, a large number of files were
modified to achieve the above, and the configuration script
was enhanced to do some automatic enabling of features (e.g.
--with-xinclude forces --with-xpath).  Additionally, all the format
errors discovered by apibuild.py were corrected.
* configure.in: enhanced cross-checking of options
* doc/apibuild.py, doc/elfgcchack.xsl, doc/libxml2-refs.xml,
  doc/libxml2-api.xml, gentest.py: changed the usage of the
  <cond> element in module descriptions
* elfgcchack.h, testapi.c: regenerated with proper conditionals
* HTMLparser.c, SAX.c, globals.c, tree.c, xmlschemas.c, xpath.c,
  testSAX.c: cleaned up conditionals
* include/libxml/[SAX.h, SAX2.h, debugXML.h, encoding.h, entities.h,
  hash.h, parser.h, parserInternals.h, schemasInternals.h, tree.h,
  valid.h, xlink.h, xmlIO.h, xmlautomata.h, xmlreader.h, xpath.h]:
  synchronized the conditionals with the corresponding module code
* doc/examples/tree2.c, doc/examples/xpath1.c, doc/examples/xpath2.c:
  added additional conditions required for compilation
* doc/*.html, doc/html/*.html: rebuilt the docs
2005-01-02 09:53:13 +00:00
William M. Brack
ad0e67c57f fixed up some gcc warnings, no change to logic. New macro XML_CAST_FPTR to
* dict.c, xpath.c, include/libxml/hash.h: fixed up some gcc warnings,
  no change to logic.  New macro XML_CAST_FPTR to circumvent gcc
  warnings on function pointer <-> object pointer (a hack).
2004-12-01 14:35:10 +00:00
Daniel Veillard
7eca35fbae fixed a memory leak on errors in some circumstances #159812 Daniel
* xpath.c: fixed a memory leak on errors in some circumstances #159812
Daniel
2004-11-29 13:08:03 +00:00
William M. Brack
f13f77f0e6 trivial change (changed CHECK_CONTEXT to CHECK_CTXT on a couple of lines)
* xpath.c: trivial change (changed CHECK_CONTEXT to CHECK_CTXT
  on a couple of lines)
* gentest.py, testapi.c: enhanced to reduce compilation warnings
2004-11-12 16:03:48 +00:00
William M. Brack
645a924a9d fixed problem concerning XPath context corruption during function argument
* xpath.c: fixed problem concerning XPath context corruption
  during function argument evaluation (bug 157652)
2004-11-09 12:20:42 +00:00
Daniel Veillard
f2a36f98e1 more types. more fixes Daniel
* testapi.c: more types.
* parserInternals.c xpath.c: more fixes
Daniel
2004-11-08 17:55:01 +00:00
Daniel Veillard
6128c01ca6 better parser options coverage more cleanups. Daniel
* gentest.py testapi.c: better parser options coverage
* SAX2.c xpath.c: more cleanups.
Daniel
2004-11-08 17:16:15 +00:00
Daniel Veillard
a82b182655 more coverage more fixes Daniel
* gentest.py testapi.c: more coverage
* debugXML.c parser.c xmlregexp.c xpath.c: more fixes
Daniel
2004-11-08 16:24:57 +00:00
Daniel Veillard
57b2516af5 augmented type autogeneration for enums removed direct error reporting.
* gentest.py testapi.c: augmented type autogeneration for enums
* xpath.c include/libxml/xpath.h: removed direct error reporting.
Daniel
2004-11-06 14:50:18 +00:00
Daniel Veillard
ce682bc24b autogenerate a minimal NULL value sequence for unknown pointer types This
* gentest.py testapi.c: autogenerate a minimal NULL value sequence
  for unknown pointer types
* HTMLparser.c SAX2.c chvalid.c encoding.c entities.c parser.c
  parserInternals.c relaxng.c valid.c xmlIO.c xmlreader.c
  xmlsave.c xmlschemas.c xmlschemastypes.c xmlstring.c xpath.c
  xpointer.c: This uncovered an impressive amount of entry points
  not checking for NULL pointers when they ought to, closing all
  the open gaps.
Daniel
2004-11-05 17:22:25 +00:00
William M. Brack
b031cef5b5 fixed problem with NULL entry (bug 157407) fixed a couple of warnings (no
* catalog.c: fixed problem with NULL entry (bug 157407)
* xpath.c: fixed a couple of warnings (no change to logic)
2004-11-05 16:34:22 +00:00
Daniel Veillard
032268145f fixed an UTF-8 parsing bug reported by Markus Bertheau on #fedora-devel
* xpath.c: fixed an UTF-8 parsing bug reported by Markus Bertheau
  on #fedora-devel
Daniel
2004-11-01 14:55:21 +00:00
Daniel Veillard
8de5c0bd79 adding the tree debug mode fixing various problems reported by the debug
* debugXML.c include/libxml/debugXML.h include/libxml/xmlerror.h:
  adding the tree debug mode
* parser.c relaxng.c tree.c xpath.c: fixing various problems reported
  by the debug mode.
* SAX2.c: another tree fix from Rob Richards
Daniel
2004-10-07 13:14:19 +00:00
William M. Brack
d1757abcb8 added two new macros IS_ASCII_LETTER and IS_ASCII_DIGIT used with (html)
* include/libxml/parserInternals.h: added two new macros
  IS_ASCII_LETTER and IS_ASCII_DIGIT used with (html)
  parsing and xpath for testing data not necessarily
  unicode.
* HTMLparser.c, xpath.c: changed use of IS_LETTER_CH and
  IS_DIGIT_CH macros to ascii versions (bug 153936).
2004-10-02 22:07:48 +00:00