Skip to content
Snippets Groups Projects
  1. Aug 04, 2019
    • Matan Nassau's avatar
      fix cmake option USE_POSTFIX (#283) · 4f6e7454
      Matan Nassau authored
      appending the suffix to the build product need not be a function of
      whether CMAKE_CONFIGURATION_TYPES is set.  for example, having two ninja
      build trees---one for debug and another for release---is a fine use-case
      for USE_POSTFIX.
      4f6e7454
  2. Jul 26, 2019
  3. Jun 19, 2019
  4. Jun 09, 2019
  5. Mar 17, 2019
  6. Mar 14, 2019
    • Arseny Kapoulkine's avatar
      29f3177d
    • Arseny Kapoulkine's avatar
      Remove contrib folder · 434c4a4d
      Arseny Kapoulkine authored
      This change removes contrib folder since it doesn't seem very useful;
      Natvis scripts can and should go to scripts/ along with project files.
      
      foreach.hpp is supporting a severely outdated BOOST_FOREACH construct;
      in C++11 ranged for loop can be used with xml_node::children/attributes,
      and BOOST_FOREACH can work with these as well.
      
      foreach.hpp was also accidentally licensed as public domain which isn't
      very helpful when the actual library is MIT. We could fix the license
      but it seems better to just remove it.
      
      Fixes #264.
      434c4a4d
  7. Mar 09, 2019
  8. Mar 08, 2019
  9. Mar 07, 2019
  10. Feb 28, 2019
  11. Feb 27, 2019
    • Arseny Kapoulkine's avatar
      tests: Expand out-of-memory union tests · 12e8b699
      Arseny Kapoulkine authored
      We now have two tests: one tests behavior when we run out of space when
      appending the node set (in which case the append fails), another one
      tests behavior when we run out of space when filtering the node set (in
      which case the set still contains redundant data).
      12e8b699
    • Arseny Kapoulkine's avatar
      XPath: Make remove_duplicates generate stable order · c55ea3bc
      Arseny Kapoulkine authored
      Given an unsorted sequence, remove_duplicates would sort it using the
      pointer value of attributes/nodes and then remove consecutive
      duplicates.
      
      This was problematic because it meant that the result of XPath queries
      was dependent on the memory allocation pattern. While it's technically
      incorrect to rely on the order, this results in easy to miss bugs.
      
      This is particularly common when XPath queries use union operators -
      although we also will call remove_duplicates in other cases.
      
      This change reworks the code to use a hash set instead, using the same
      hash function we use for compact storage. To make sure it performs well,
      we allocate enough buckets for count * 1.5 (assuming all elements are
      unique); since each bucket is a single pointer unlike xpath_node which
      is two pointers, we need somewhere between size * 0.75 and size * 1.5
      temporary storage.
      
      The resulting filtering is stable - we remove elements that we have seen
      before but we don't change the order - and is actually significantly
      faster than sorting was.
      
      With a large union operation, before this change it took ~56 ms per 100
      query invocations to remove duplicates, and after this change it takes
      ~20ms.
      
      Fixes #254.
      c55ea3bc
    • Arseny Kapoulkine's avatar
      tests: Disable flaky test · 930a701f
      Arseny Kapoulkine authored
      This test is very sensitive to the particular implementation of union
      aggregation; for now lets disable this.
      
      We need a more robust way to test union allocation failures.
      930a701f
    • Arseny Kapoulkine's avatar
      XPath: Create set for a|b in order before duplicate filtering · 93c7bacb
      Arseny Kapoulkine authored
      This does not change the result of a union operation [substantially], but
      it means that we now give a list to remove_duplicates that has more natural
      ordering.
      
      If remove_duplicates didn't sort the array, we'd have union operations
      resulting in a consistent predictable order.
      
      Contributes to #254.
      93c7bacb
  12. Feb 06, 2019
  13. Jan 26, 2019
  14. Jan 20, 2019
  15. Jan 01, 2019
  16. Dec 10, 2018
  17. Nov 27, 2018
    • Arseny Kapoulkine's avatar
      tests: Only use load_file_special_folder test on macOS · 7664bbf9
      Arseny Kapoulkine authored
      The behavior on Linux is very different between kernel versions, and it
      triggers an unexpected OOM during sanitizer runs because somehow the
      size is reported to be LONG_MAX. It's not clear that it helps us cover
      any paths we don't cover otherwise - it would be nice to be able to test
      failing to load a multi-gigabyte file on a 32-bit system, but we can't
      do this easily atm anyway.
      7664bbf9
    • Arseny Kapoulkine's avatar
      Enable config=sanitize in Travis CI · 1a9c3f66
      Arseny Kapoulkine authored
      This commit changes sanitize configuration to fail on the first error
      and ignore floating-point division and overflow "errors" that trigger
      when we test the corresponding functionality. This makes it possible to
      run this on all commits - if new UB or memory safety issues are introduced,
      asan/ubsan will catch them.
      1a9c3f66
  18. Nov 24, 2018
    • Arseny Kapoulkine's avatar
      Fix Wdouble-promotion warnings · f9a2a7d1
      Arseny Kapoulkine authored
      We had a few places in test code and library source where we used an
      implicit float->double cast; while it should preserve the value exactly,
      gcc/clang implement this warning to make sure uses of double are intentional.
      
      This change also adds the warning to Makefile to make sure we don't
      regress on this warning.
      
      Fixes #243.
      f9a2a7d1
  19. Nov 20, 2018
    • Arseny Kapoulkine's avatar
      Escape TAB character in attribute values with 	 · aac75cd2
      Arseny Kapoulkine authored
      This change modifies the table entries for ctx_special_attr to treat TAB
      character as special, which makes the output code escape it.
      
      Before this change, trying to use TAB in an attribute value would output
      it verbatim; during subsequent parsing, pugixml - and other compliant
      parsers - would apply attribute-value normalization, turning the TAB
      into a space and losing the original value.
      
      Using 	 fixes this; if an input document has 	 in an attribute
      value, that gets unescaped into \t during parsing and escaped back into
      	 during output, which means we can now roundtrip values like this.
      
      Fixes #242.
      aac75cd2
  20. Nov 16, 2018
  21. Nov 12, 2018
  22. Oct 24, 2018
    • Arseny Kapoulkine's avatar
      XPath: Workaround Coverity false positive · d9fadc74
      Arseny Kapoulkine authored
      Coverity hits a similar false positive to what clang static analyzer hit
      - it assumes that since optimize() checks _right for being nullptr,
      optimize_self() might hit _right=nullptr in the ast_op_equal case which
      is impossible.
      
      Contributes to #236.
      d9fadc74
  23. Oct 16, 2018
    • Lipsa, Dan's avatar
      Remove warning in Visual Studio (#235) · 273fa0ab
      Lipsa, Dan authored
      The following warning is removed:
      Visual Studio 14.0
      1. warning C4275: non dll-interface class 'std::exception' used as
         base for dll-interface class 'vtkpugixml::xpath_exception'
      273fa0ab
  24. Sep 25, 2018
    • Arseny Kapoulkine's avatar
      Work around clang --analyze warnings · 81c82588
      Arseny Kapoulkine authored
      clang doesn't understand the invariants guaranteed for specific AST node
      types and, when seeing null pointer checks in optimize(), assumes any
      pointers in the node might be null. Work around this by adding explicit
      - redundant - null pointer checks.
      81c82588
Loading