0
0
mirror of https://github.com/zeux/pugixml.git synced 2025-01-14 09:57:57 +08:00

1350 Commits

Author SHA1 Message Date
Arseny Kapoulkine
cb786665d4 tests: Add PUGIXML_COMPACT to AppVeyor 2015-04-13 20:36:04 -07:00
Arseny Kapoulkine
ed2c822643 Merge branch 'master' into compact 2015-04-13 20:35:26 -07:00
Arseny Kapoulkine
1c4098a7d9 Remove all files for the Jamplus-based build system
End of an era.

Make can be used for regular development (Linux/OSX), documentation building
and release packaging.
CMake can be used for regular development (Windows); it's also used by some
Linux distributions.

Continuous integration is now performed by Travis CI and AppVeyor.
2015-04-13 20:30:14 -07:00
Arseny Kapoulkine
baacd81907 Fix AppVeyor script path 2015-04-13 20:10:45 -07:00
Arseny Kapoulkine
218ddd0376 Add AppVeyor build scripts 2015-04-13 20:03:49 -07:00
Arseny Kapoulkine
05032b4c06 scripts: Add an option for building tests with CMake 2015-04-13 20:02:09 -07:00
halex2005
5d66ae9fb9 add tests for aligning each attribute on next line 2015-04-14 00:56:42 +05:00
halex2005
6766f35338 add align each attribute on new line support with format_indent_attribute 2015-04-14 00:56:23 +05:00
Arseny Kapoulkine
054b0b447e Merge branch 'master' into compact 2015-04-12 22:09:45 -07:00
Arseny Kapoulkine
9539c488c2 Fix unused variable warning
Also fix test in wchar_t mode.
2015-04-12 22:06:17 -07:00
Arseny Kapoulkine
f04b56e178 Permit custom allocation function to throw
Ensure that all the necessary cleanup is performed in case the allocation fails
with an exception - files are closed, buffers are reclaimed, etc.

Any test that triggers a simulated out-of-memory condition is ran once again
with a throwing allocation function. Unobserved std::bad_alloc count as test
failures and require CHECK_ALLOC_FAIL macro.

Fixes #17.
2015-04-12 21:46:48 -07:00
Arseny Kapoulkine
5edeaf6765 tests: Add more out of memory tests
Also add tests that verify save_file for absence of FILE leaks.
2015-04-12 21:27:12 -07:00
Arseny Kapoulkine
6c11a0c693 Fix compilation and tests after merge. 2015-04-12 03:14:08 -07:00
Arseny Kapoulkine
a19da1c246 Merge branch 'master' into compact 2015-04-12 03:05:58 -07:00
Arseny Kapoulkine
a0d065cd22 Implment copyless copy for attributes
Previously attributes that were copied with their node used string sharing,
but standalone attributes that were copied using xml_node::*_copy(xml_attribute)
were not.
2015-04-12 03:03:56 -07:00
Arseny Kapoulkine
c5d07e2c28 tests: Add a test that verifies absence of file leaks
If an out of memory error happens in load_file there's a danger of leaking
the FILE object. Since there is a limited supply of the objects we can easily
test that the leak does not happen.
2015-04-12 02:34:48 -07:00
Arseny Kapoulkine
2537cccad3 tests: Fix some Coverity issues 2015-04-12 02:17:20 -07:00
Arseny Kapoulkine
d6f7766172 Optimize xml_node::path() to use 1 allocation
Instead of reallocating the string for every tree level just do two passes
over the ancestor chain.
2015-04-12 02:12:15 -07:00
Arseny Kapoulkine
99afee1832 Move zero-termination out of as_utf8_end
as_utf8_end was used with std::string, where writing an extra zero-terminating
character should *probably* always work (at least if size is positive) but is
not ideal.

The only place that needed to zero-terminate was convert_path_heap.
2015-04-12 01:32:25 -07:00
Arseny Kapoulkine
3da7d68617 Fix Travis CI build. 2015-04-11 22:52:41 -07:00
Arseny Kapoulkine
4e004176ba tests: Improve out-of-memory tests
Previously there was no guarantee that the tests that check for out of memory
handling behavior are actually correct - e.g. that they correctly simulate out
of memory conditions.

Now every simulated out of memory condition has to be "guarded" using
CHECK_ALLOC_FAIL. It makes sure that every piece of code that is supposed to
cause out-of-memory does so, and that no other code runs out of memory
unnoticed.
2015-04-11 22:46:08 -07:00
Arseny Kapoulkine
37467c13bf tests: Add a test for throwing from xml_writer::write
We currently don't allocate/modify any state so there are no issues with this.
2015-04-11 22:44:42 -07:00
Arseny Kapoulkine
e2e5bc906a Use -fno-exceptions flag for PUGIXML_NO_EXCEPTIONS build
This makes sure that no exception handling mechanisms are used if
PUGXML_NO_EXCEPTIONS is defined.
2015-04-11 22:42:27 -07:00
Arseny Kapoulkine
814443b147 Fix exception type for out-of-memory for XPath variables
When parsing XPath variables, we need to perform a heap allocation; if it
fails, an xpath_exception instead of bad_alloc used to be thrown.

Now we throw the exception of a correct type so that xpath_exception means
'parsing error'.
2015-04-11 22:40:30 -07:00
Arseny Kapoulkine
03ea04c32a tests: Use char_t instead of wchar_t 2015-04-11 00:33:35 -07:00
Arseny Kapoulkine
29fef9aca2 tests: Add more out of memory tests
This provides more coverage for #17.
2015-04-11 00:16:39 -07:00
Arseny Kapoulkine
e90d2ac8ba Merge branch 'master' into compact 2015-04-10 22:26:57 -07:00
Arseny Kapoulkine
405fefc877 Update README.md 2015-04-10 20:59:07 -07:00
Arseny Kapoulkine
9b8553bf4b docs: Update release date v1.6 2015-04-10 20:49:47 -07:00
Arseny Kapoulkine
f1d1534210 Fix archive packaging
Base directory is now using target basename.
2015-04-10 20:45:07 -07:00
Arseny Kapoulkine
10ff488eb9 docs: Use automatically retrieved version for docs
This eliminates one more hardcoded version from the repo, yay!
2015-03-24 20:59:04 -07:00
Arseny Kapoulkine
fc20b0afbb Update Makefile to exclude docs/manual folder from release 2015-03-24 20:08:06 -07:00
Arseny Kapoulkine
e35058cfda docs: Add generated documentation 2015-03-24 20:07:19 -07:00
Arseny Kapoulkine
80a8a77af4 docs: Finishing touches
It's almost done; the only remaining issue is that some section titles are too long.
2015-03-24 10:03:08 -07:00
Arseny Kapoulkine
704d27622b Add include dependencies to HTML targets 2015-03-22 11:34:06 -07:00
Arseny Kapoulkine
9a55571725 docs: Reword documentation note 2015-03-22 10:44:46 -07:00
Arseny Kapoulkine
c0374b8a48 docs: Minor API reference improvements 2015-03-22 10:40:18 -07:00
Arseny Kapoulkine
3f3e4525e1 docs: Fix several internal links 2015-03-22 10:08:35 -07:00
Arseny Kapoulkine
5644027990 docs: HTML validity fixes
Also minor wording fixes.
2015-03-22 09:50:55 -07:00
Arseny Kapoulkine
40fa405751 docs: Converted some samples to Unix newline 2015-03-22 01:01:46 -07:00
Arseny Kapoulkine
56bdc6c5ea docs: Extract configuration to config.adoc 2015-03-22 00:35:06 -07:00
Arseny Kapoulkine
c94e8a7c0e docs: Remove old Quickbook sources 2015-03-22 00:16:14 -07:00
Arseny Kapoulkine
d4f9047b2f docs: Fix PUGIXML_HEADER_ONLY description
Users no longer need to #include "pugixml.cpp"
2015-03-22 00:14:48 -07:00
Arseny Kapoulkine
11054219de docs: A lot of small fixes
Mostly added correct quotation to changelog.
2015-03-22 00:11:19 -07:00
Arseny Kapoulkine
55081aca8b docs: Set up cross-referencing and anchors
This is mostly done using regex replaces of original Quickbook markup, plus a
bit of manual fixup for multiple references to the single point from different
lines that AsciiDoc does not seem to handle.
2015-03-21 23:37:33 -07:00
Arseny Kapoulkine
054bffb195 docs: API reference is closer to being done
Still need to replace [link ] with actual links.
Also a bunch of small fixes here and there.
2015-03-21 23:09:29 -07:00
Arseny Kapoulkine
363b7a3b22 docs: Fix nested lists and changelog 2015-03-21 22:23:03 -07:00
Arseny Kapoulkine
5f8cd17ff6 docs: Fix tables and images in the manual
Also remove redundant [lbr]
2015-03-21 21:56:54 -07:00
Arseny Kapoulkine
b9177ab7b5 docs: Remove image thumbnails 2015-03-21 21:53:50 -07:00
Arseny Kapoulkine
d8f900f148 Add docs target to Makefile 2015-03-21 21:06:48 -07:00
Arseny Kapoulkine
eed184a175 docs: Remove auxiliary files for old documentation 2015-03-21 21:05:52 -07:00
Arseny Kapoulkine
2843f91d00 docs: Remove old HTML documentation 2015-03-21 21:04:28 -07:00
Arseny Kapoulkine
1a450b302a docs: Use AsciiDoc-compatible comments in samples 2015-03-21 21:03:01 -07:00
Arseny Kapoulkine
23e9beb003 docs: Add AsciiDoc versions of quickstart and manual
Quickstart should be reasonably complete; manual is still in progress
2015-03-21 21:02:27 -07:00
Arseny Kapoulkine
5959a17967 tests: Final test fix for CW 2015-03-21 17:09:42 -07:00
Arseny Kapoulkine
250b690a54 tests: Work around fp issues in various runtime libraries
Disable/change some tests for some compilers; use binary float comparison
for early MSVC versions.
2015-03-21 01:05:31 -07:00
Arseny Kapoulkine
ce974094ac tests: Fix test compilation
Rename PAGE_SIZE to page_size to avoid define conflict with Android SDK.
Minor fixes in several tests.
2015-03-21 00:14:53 -07:00
Arseny Kapoulkine
28e63f66e1 Update year to 2015 2015-03-20 20:47:14 -07:00
Arseny Kapoulkine
5642f4d6e2 Add release target to Makefile 2015-03-20 00:36:10 -07:00
Arseny Kapoulkine
d1aad862d6 Makefile refactoring
Simplify test source specification, disable built-in rules and suffixes
2015-03-20 00:34:37 -07:00
Arseny Kapoulkine
5d4f605fd2 Fix Jamfile (exclude fuzz_*.cpp) 2015-03-20 00:30:27 -07:00
Arseny Kapoulkine
58609480a1 docs: Regenerate documentation 2015-03-20 00:17:51 -07:00
Arseny Kapoulkine
82e43972b5 docs: Fix quickstart download links 2015-03-19 19:22:46 -07:00
Arseny Kapoulkine
86410cd696 tests: Fix tests in wchar mode 2015-03-18 21:30:30 -07:00
Arseny Kapoulkine
0d3eabc0b7 docs: Add changelog for 1.6 2015-03-18 21:28:42 -07:00
Arseny Kapoulkine
e68048518e Update version to 1.6 2015-03-18 21:20:40 -07:00
Arseny Kapoulkine
5f996eba6d Do not emit surrounding whitespace for text nodes
Previously we omitted extra whitespace for single PCDATA/CDATA children, but in
mixed content there was extra indentation before/after text nodes.

One of the problems with that is that the text that you saved is not exactly
the same as the parsing result using default flags (parse_trim_pcdata helps).

Another problem is that parse-format cycles do not have a fixed point for mixed
content - the result expands indefinitely. Some XML libraries, like Python
minidom, have the same issue, but this is definitely a problem.

Pretty-printing mixed content is hard. It seems that the only other sensible
choice is to switch mixed content nodes to raw formatting. In a way the code in
this change is a weaker version of that - it removes indentation around text
nodes but still keeps it around element siblings/children.

Thus we can switch to mixed-raw formatting at some point later, which will be
a superset of the current behavior.

To do this we have to either switch at the first text node (.NET XmlDocument
does that), or scan the children of each element for a possible text node and
switch before we output the first child.

The former behavior seems non-intuitive (and a bit broken); unfortunately, the
latter behavior can cost up to 20% of the output time for trees *without* mixed
content.

Fixes #13.
2015-03-18 09:59:17 -07:00
Arseny Kapoulkine
51da129b50 tests: Fix truncation test
data/truncation.xml was corrupted at some point and was not actually valid.
Fix the file and make the test fail if we can't parse truncation.xml at all.
2015-03-13 22:13:10 -07:00
Arseny Kapoulkine
6457f09412 Merge branch 'master' into compact 2015-03-13 08:12:46 -07:00
Arseny Kapoulkine
15fba1debc tests: Add support for afl-fuzz
With the current setup it successfully finds the (fixed) DOCTYPE buffer overrun
in ~50 minutes (on a single core).
2015-03-13 00:18:30 -07:00
Arseny Kapoulkine
0542b1869b Fix buffer overrun when parsing comments inside DOCTYPE 2015-03-12 20:21:59 -07:00
Arseny Kapoulkine
50822aa2ac Fix optimized string header encoding for compact mode
Since in compact mode we only ever have a guaranteed alignment on 4, the pages
are limited to 256k even if pointers are 64 bit.
2015-03-10 21:15:13 -07:00
Arseny Kapoulkine
f81d7cc018 Merge branch 'master' into compact 2015-03-10 20:44:06 -07:00
Arseny Kapoulkine
604861e520 Escape ?> sequence in PI value during printing
This prevents malformed PI value from breaking the document structure.
2015-03-10 09:03:22 -07:00
Arseny Kapoulkine
23060d0954 Use more efficient encoding for string headers
Since all string allocations are pointer-aligned to avoid aligning more
frequent node allocations, we can rely on that in string encoding.

Encoding page offset and block size in sizeof(void*) units increases the
maximum memory page size from 64k to 256k on 32-bit and 512k on 64-bit
platforms.

Fixes #35.
2015-03-05 13:02:05 -08:00
Arseny Kapoulkine
12e137d12f tests: Move null buffer tests to test_document
Remove size=0 test since a better test is already there.
2015-03-05 11:46:34 -08:00
Arseny Kapoulkine
9749920c82 Refactor contents=0 behavior
Also change the error code to status_io_error
2015-03-05 11:35:39 -08:00
Arseny Kapoulkine
57ca94f897 load_buffer_impl now checks that buffer is valid
Merge branch 'mloy-master'
2015-03-05 10:19:28 -08:00
Arseny Kapoulkine
7ae7344256 Merge branch 'master' of https://github.com/mloy/pugixml into mloy-master 2015-03-05 10:09:54 -08:00
Arseny Kapoulkine
5a848de085 tests: Fix XPath string comparison
Also add new tests for translate. These are technically redundant since other
tests would catch the bug with the fixed comparison, but more tests is better.
2015-03-04 10:44:08 -08:00
Arseny Kapoulkine
cb04ab2700 Fix string length for translate and normalize-space
The implementations generated a string with an internal null terminator; this
went unnoticed since unit test string verification did not perform string
equality check properly (it compared XPath string result as a C-string, thus
stopping at the first null terminator).

Fixes #36.
2015-03-04 10:43:45 -08:00
Arseny Kapoulkine
ee4e2b8669 tests: Implement page heap for OSX/Linux
Align allocations to right end of page boundary to catch buffer overruns,
instead of unmapping on deallocations mark the page as no-access to guarantee
a page fault on use-after-free.
2015-03-01 20:57:22 -08:00
Arseny Kapoulkine
35a63cb1e6 Don't use xargs -r since it's a GNU extensions.
Instead just ignore the result of xargs.
2015-02-12 08:55:45 -08:00
Arseny Kapoulkine
7835302297 tests: Fix tests for wchar mode 2015-02-12 08:54:44 -08:00
Arseny Kapoulkine
e94552c9ca DOCTYPE parsing is now stackless
This prevents malformed input XML with very deeply recursive DOCTYPE sections
from crashing the parser.

Fixes #29.
2015-02-12 08:12:12 -08:00
Arseny Kapoulkine
00b4b0192f docs: Change issue links to GitHub
This removes the last code.google.com reference from documentation.
2015-01-24 08:20:42 -08:00
Arseny Kapoulkine
650a4c6cca Use string::append in implementations of xml_writer
The current code is not optimal; since users actually read samples/tests
change them to use faster (and shorter!) code.
2015-01-24 08:20:42 -08:00
Arseny Kapoulkine
3181a305ed tests: Fix MSVC 2008 compilation warning
Also include math.h to fix issues on some compilers.
2015-01-17 18:40:09 -08:00
Arseny Kapoulkine
617f302808 tests: Use Git instead of Subversion in autotest 2015-01-17 18:39:29 -08:00
Arseny Kapoulkine
e5ecbd63ce Merge branch 'master' into compact 2015-01-16 21:48:50 -08:00
Arseny Kapoulkine
8e95f0d889 docs: Add missing float setters to reference
Also fix the float/double member order in the header file.
2015-01-16 21:43:57 -08:00
Arseny Kapoulkine
d454013cff tests: Add tests for fp roundtrip
We test min/max and several different mantissas for the entire exponent range
for both float and double.

It's not clear whether all supported compilers provide an implementation of
sprintf/strtod that supports roundtripping so we may need to disable some of
these tests in the future.
2015-01-16 21:43:28 -08:00
Arseny Kapoulkine
f9ee391233 tests: Add coverage tests for new float setters
These only do basic testing to make sure the paths are covered and trivial
values work.
2015-01-16 21:42:35 -08:00
Arseny Kapoulkine
f07018f7e7 Convert spaces to tabs 2015-01-16 21:40:39 -08:00
Arseny Kapoulkine
550ab4b635 Merge pull request #27 from sdoiel61/master
Make float/double round-trip

This change also adds xml_text::set and xml_attribute::set_value overloads for float so that float is only printed using just enough digits to represent float, instead of enough digits to represent double.
2015-01-16 20:54:58 -08:00
Steve Doiel
cf72c20ca1 Increase precision on large number test 2015-01-16 16:14:59 -08:00
Steve Doiel
53525a037b Add a couple of more overloads for floats 2015-01-16 15:20:28 -08:00
Steve Doiel
4ae1940065 Fix attribute round trip for float as well 2015-01-16 14:55:10 -08:00
Arseny Kapoulkine
f3e42969a5 Simplify header-only mode usage
It's sufficient to define PUGIXML_HEADER_ONLY anywhere now, source is included
automatically.

This is a second attempt; this time it includes a workaround for QMake bug
that caused it to generate incorrect Makefile.
2015-01-09 23:22:57 -08:00
Steve Doiel
32f0a8bd3a Add xml_text::set for float
Make float/double round-trip
2015-01-06 15:33:56 -08:00