summaryrefslogtreecommitdiff
path: root/source/fitz/xml.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-03-08 18:27:49 +0100
committerTor Andersson <tor.andersson@artifex.com>2016-03-14 17:08:29 +0100
commit23854d215beb3132109155817b2182415fedc91c (patch)
tree081197938c173b8154fd37d9825f47fd5f0249b8 /source/fitz/xml.c
parenta9c2b1cf38a167e22810bfe2bcb04da2013ef643 (diff)
downloadmupdf-23854d215beb3132109155817b2182415fedc91c.tar.xz
xml: Fix linebreak before closing tag test.
Diffstat (limited to 'source/fitz/xml.c')
-rw-r--r--source/fitz/xml.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/source/fitz/xml.c b/source/fitz/xml.c
index 85763802..31565980 100644
--- a/source/fitz/xml.c
+++ b/source/fitz/xml.c
@@ -454,16 +454,16 @@ static char *xml_parse_document_imp(fz_context *ctx, struct parser *parser, char
parse_text:
mark = p;
while (*p && *p != '<') ++p;
- if (mark < p) {
- /* must skip linebreak immediately before an end tag */
- if (p[1] == '/' && p[-1] == '\n') {
- if (mark < p-1)
- xml_emit_text(ctx, parser, mark, p-1);
- } else {
+ if (*p == '<') {
+ /* skip trailing newline before closing tag */
+ if (p[1] == '/' && p - 1 >= mark && p[-1] == '\n')
+ xml_emit_text(ctx, parser, mark, p - 1);
+ else if (mark < p)
xml_emit_text(ctx, parser, mark, p);
- }
- }
- if (*p == '<') { ++p; goto parse_element; }
+ ++p;
+ goto parse_element;
+ } else if (mark < p)
+ xml_emit_text(ctx, parser, mark, p);
return NULL;
parse_element: