- Jun 19, 2019
-
-
m-naumann authored
This change adds format_attribute_single_quote flag that uses single quotes (`'`) instead of double quotes (`"`) for formatting attribute values. Internal quotation marks are escaped using `"` and `'`.
-
- Jun 09, 2019
-
-
Arseny Kapoulkine authored
std::random_shuffle is removed in current standard
-
denchat authored
-
denchat authored
use <random> 's generator and std::shuffle instead
-
- Mar 17, 2019
-
-
Arseny Kapoulkine authored
Also split one-liner if/for loops for better readability and coverage.
-
Arseny Kapoulkine authored
Remove contrib folder
-
- Mar 14, 2019
-
-
Arseny Kapoulkine authored
-
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.
-
- Mar 09, 2019
-
-
Arseny Kapoulkine authored
Also fix code style.
-
Arseny Kapoulkine authored
Includes wording fixes and format_skip_control_chars
-
Arseny Kapoulkine authored
format_skip_control_chars
-
- Mar 08, 2019
-
-
Yan Pas authored
-
- Mar 07, 2019
-
-
Yan Pashkovsky authored
-
- Feb 28, 2019
-
-
WheretIB authored
-
- Feb 27, 2019
-
-
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).
-
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.
-
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.
-
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.
-
- Feb 06, 2019
-
-
Arseny Kapoulkine authored
We now have a ${LIBRARY} variable that we can either use directly or in a foreach loop to be able to process either pugixml or pugixml-static and pugixml-shared targets. Also fixes incorrect shared library assignment when BUILD_SHARED_AND_STATIC_LIBS is defined, and only links the static library in for make check.
-
basti171 authored
-
- Jan 26, 2019
-
-
Arseny Kapoulkine authored
Change confusing wording: null nodes compare as equal to null handles, the previous wording implied that each null handle is unique
-
- Jan 20, 2019
-
-
Arseny Kapoulkine authored
This may or may not make it more clear that pugixml.cpp has to be compiled - either as one of the projects or as a standalone project via CMake et al - for it to work by default. Fixes #256.
-
- Jan 01, 2019
-
-
Arseny Kapoulkine authored
-
- Dec 10, 2018
-
-
Millian Poquet authored
Fixes an installation problem in Nix packages, as non-FULL variables are already absolute paths in this case.
-
Arseny Kapoulkine authored
This allows us to reuse this code for MinGW builds. Additionally disable coverage step for Linux clang - it looks like Travis has a mismatch in the version of gcov info between clang and gcov which causes gcov to crash - somehow this crash isn't picked up as a build error.
-
Arseny Kapoulkine authored
We are currently only testing UTF8 mode which means we don't have code coverage for some UTF->UTF decoding paths.
-
Arseny Kapoulkine authored
This is a dummy commit to trigger codecov build
-
Arseny Kapoulkine authored
Use cygwin to build coverage build and upload coverage data to codecov.
-
- Nov 27, 2018
-
-
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.
-
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.
-
- Nov 24, 2018
-
-
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.
-
- Nov 20, 2018
-
-
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.
-
- Nov 16, 2018
-
-
cecilios authored
-
- Nov 12, 2018
-
-
Arseny Kapoulkine authored
-
Wolfgang Stöggl authored
-
- Oct 24, 2018
-
-
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.
-
- Oct 16, 2018
-
-
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'
-
- Sep 25, 2018
-
-
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.
-
Arseny Kapoulkine authored
This change replaces xpath_node_set single element storage with a single-element array in hopes that this would silence Coverity false positive about getting a singleton pointer. Additionally, it refactors _assign member to unify small and large buffer codepaths since they are basically identical. Fixes #233 (hopefully)
-
- Aug 14, 2018
-
-
Arseny Kapoulkine authored
Intel compiler by default sets flush-to-zero flags which causes our denorm test to produce 0.0. So make sure that denorms work on FPU before testing the string output. Fixes #218.
-