Age | Commit message (Collapse) | Author |
|
This change implements move ctor and assign support for xml_document.
All node handles remain valid after the move and point to the new document; the only exception is the document node itself (that remains unmoved).
Move is O(document size) in theory because it needs to relocate immediate document children (there is just one in conformant documents) and all memory pages; in practice the memory pages only need the header adjusted, which is ~0.1% of the actual data size.
Move requires no allocations in general, except when using compact mode where some moves need to grow the hash table which can fail (throw).
Fixes #104
|
|
These days OSX clang supports UB sanitizer so we can just use the same
settings for all systems.
|
|
The old fuzzer location is deprecated; this also makes it almost trivial
to fuzz, provided that the clang is set up correctly... on Ubuntu 17.10,
a command sequence like this works now:
sudo apt install clang-5.0
sudo apt install libfuzzer-5.0
sudo cp /usr/lib/llvm-5.0/lib/libFuzzer.a /usr/lib/libLLVMFuzzer.a
CXX=clang++-5.0 make fuzz_parse
|
|
Now the only thing fuzz_setup.sh does is installing new clang; if system
clang supports -fsanitize-coverage then fuzz_setup.sh is not required.
|
|
|
|
Hopefully this will allow for better fuzzing coverage
|
|
This allows us to have faster fuzz cycles since the fuzzer is in-process.
|
|
|
|
We used to use the current timestamp when building the archive; switch to using
the timestamp of the tag with the version we're packaging.
This requires some monkey patching since tarfile module is always using current
timestamp when writing gzip header...
Also exclude archive.py from archive and simplify release file list in Makefile.
|
|
|
|
Perl version needed Archive::Zip that for some reason is not installed on WSL by
default. Use this as an opportunity to remove the last Perl script.
|
|
It interferes in a somewhat strange way with codecov reporting
|
|
It is probably redundant given that we have -Wold-style-cast, but it's better
to warn about casts like this in case we ever need to remove the latter flag.
|
|
|
|
This determines the used C++ standard.
If you do not want to use a specific C++ standard, use cxxstd=any.
The default is set to c++11.
The "define" PUGIXML_NO_CXX11 is removed from the Makefile
since it is not used in the code anyways.
|
|
|
|
Travis CI strikes once more.
|
|
|
|
|
|
Also upload just pugixml.cpp.gcov to codecov to avoid issues the script has
with old gcov.
|
|
Use find -exec instead of xargs to work around differences between xargs on OSX
and Linux.
Use -b option of gcov - for some reason gcov on Travis can't find .gcno files
otherwise (old version?).
And finally enable config=coverage again.
|
|
Use -coverage option and keep NDEBUG off
|
|
All other sanitizers are still unavailable so only enable them on non-OSX
systems.
|
|
|
|
|
|
|
|
This makes sure that no exception handling mechanisms are used if
PUGXML_NO_EXCEPTIONS is defined.
|
|
This eliminates one more hardcoded version from the repo, yay!
|
|
|
|
|
|
|
|
|
|
Simplify test source specification, disable built-in rules and suffixes
|
|
With the current setup it successfully finds the (fixed) DOCTYPE buffer overrun
in ~50 minutes (on a single core).
|
|
Instead just ignore the result of xargs.
|
|
Not sure why xargs -r is not the default...
|
|
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1079 99668b35-9821-0410-8761-19e4c4f06640
|
|
This expands and replaces the Travis-specific makefile by adding more options and correctly tracking header dependencies.
Also add wchar_t mode test to Travis configuration.
git-svn-id: http://pugixml.googlecode.com/svn/trunk@971 99668b35-9821-0410-8761-19e4c4f06640
|