New testcases.

2002-05-18  Matthias Clasen  <maclas@gmx.de>

	* tests/markups/fail-36.gmarkup:
	* tests/markups/fail-35.gmarkup:
	* tests/markups/valid-8.gmarkup:
	* tests/markups/valid-7.gmarkup:
	* tests/markups/valid-6.gmarkup:
	* tests/markups/valid-5.gmarkup: New testcases.

	* tests/markup-test.c (passthrough_handler):
	(text_handler): Don't ignore the text_len parameter.

	* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
	nuls.  (#81977)
	(g_markup_parse_context_parse): Fix passthrough handling to
	correctly skip processing instructions, comments, doctype
	declarations and CDATA marked sections.  (#81977)
This commit is contained in:
Matthias Clasen 2002-05-18 22:06:54 +00:00 committed by Matthias Clasen
parent ed8f19b4c6
commit 60f59976d9
16 changed files with 167 additions and 6 deletions

View File

@ -1,3 +1,21 @@
2002-05-18 Matthias Clasen <maclas@gmx.de>
* tests/markups/fail-36.gmarkup:
* tests/markups/fail-35.gmarkup:
* tests/markups/valid-8.gmarkup:
* tests/markups/valid-7.gmarkup:
* tests/markups/valid-6.gmarkup:
* tests/markups/valid-5.gmarkup: New testcases.
* tests/markup-test.c (passthrough_handler):
(text_handler): Don't ignore the text_len parameter.
* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
nuls. (#81977)
(g_markup_parse_context_parse): Fix passthrough handling to
correctly skip processing instructions, comments, doctype
declarations and CDATA marked sections. (#81977)
Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org> Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org>
[merged from stable] [merged from stable]

View File

@ -1,3 +1,21 @@
2002-05-18 Matthias Clasen <maclas@gmx.de>
* tests/markups/fail-36.gmarkup:
* tests/markups/fail-35.gmarkup:
* tests/markups/valid-8.gmarkup:
* tests/markups/valid-7.gmarkup:
* tests/markups/valid-6.gmarkup:
* tests/markups/valid-5.gmarkup: New testcases.
* tests/markup-test.c (passthrough_handler):
(text_handler): Don't ignore the text_len parameter.
* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
nuls. (#81977)
(g_markup_parse_context_parse): Fix passthrough handling to
correctly skip processing instructions, comments, doctype
declarations and CDATA marked sections. (#81977)
Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org> Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org>
[merged from stable] [merged from stable]

View File

@ -1,3 +1,21 @@
2002-05-18 Matthias Clasen <maclas@gmx.de>
* tests/markups/fail-36.gmarkup:
* tests/markups/fail-35.gmarkup:
* tests/markups/valid-8.gmarkup:
* tests/markups/valid-7.gmarkup:
* tests/markups/valid-6.gmarkup:
* tests/markups/valid-5.gmarkup: New testcases.
* tests/markup-test.c (passthrough_handler):
(text_handler): Don't ignore the text_len parameter.
* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
nuls. (#81977)
(g_markup_parse_context_parse): Fix passthrough handling to
correctly skip processing instructions, comments, doctype
declarations and CDATA marked sections. (#81977)
Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org> Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org>
[merged from stable] [merged from stable]

View File

@ -1,3 +1,21 @@
2002-05-18 Matthias Clasen <maclas@gmx.de>
* tests/markups/fail-36.gmarkup:
* tests/markups/fail-35.gmarkup:
* tests/markups/valid-8.gmarkup:
* tests/markups/valid-7.gmarkup:
* tests/markups/valid-6.gmarkup:
* tests/markups/valid-5.gmarkup: New testcases.
* tests/markup-test.c (passthrough_handler):
(text_handler): Don't ignore the text_len parameter.
* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
nuls. (#81977)
(g_markup_parse_context_parse): Fix passthrough handling to
correctly skip processing instructions, comments, doctype
declarations and CDATA marked sections. (#81977)
Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org> Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org>
[merged from stable] [merged from stable]

View File

@ -1,3 +1,21 @@
2002-05-18 Matthias Clasen <maclas@gmx.de>
* tests/markups/fail-36.gmarkup:
* tests/markups/fail-35.gmarkup:
* tests/markups/valid-8.gmarkup:
* tests/markups/valid-7.gmarkup:
* tests/markups/valid-6.gmarkup:
* tests/markups/valid-5.gmarkup: New testcases.
* tests/markup-test.c (passthrough_handler):
(text_handler): Don't ignore the text_len parameter.
* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
nuls. (#81977)
(g_markup_parse_context_parse): Fix passthrough handling to
correctly skip processing instructions, comments, doctype
declarations and CDATA marked sections. (#81977)
Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org> Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org>
[merged from stable] [merged from stable]

View File

@ -1,3 +1,21 @@
2002-05-18 Matthias Clasen <maclas@gmx.de>
* tests/markups/fail-36.gmarkup:
* tests/markups/fail-35.gmarkup:
* tests/markups/valid-8.gmarkup:
* tests/markups/valid-7.gmarkup:
* tests/markups/valid-6.gmarkup:
* tests/markups/valid-5.gmarkup: New testcases.
* tests/markup-test.c (passthrough_handler):
(text_handler): Don't ignore the text_len parameter.
* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
nuls. (#81977)
(g_markup_parse_context_parse): Fix passthrough handling to
correctly skip processing instructions, comments, doctype
declarations and CDATA marked sections. (#81977)
Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org> Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org>
[merged from stable] [merged from stable]

View File

@ -1,3 +1,21 @@
2002-05-18 Matthias Clasen <maclas@gmx.de>
* tests/markups/fail-36.gmarkup:
* tests/markups/fail-35.gmarkup:
* tests/markups/valid-8.gmarkup:
* tests/markups/valid-7.gmarkup:
* tests/markups/valid-6.gmarkup:
* tests/markups/valid-5.gmarkup: New testcases.
* tests/markup-test.c (passthrough_handler):
(text_handler): Don't ignore the text_len parameter.
* glib/gmarkup.c (find_current_text_end): Don't hang on embedded
nuls. (#81977)
(g_markup_parse_context_parse): Fix passthrough handling to
correctly skip processing instructions, comments, doctype
declarations and CDATA marked sections. (#81977)
Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org> Sat May 18 00:21:51 2002 Tim Janik <timj@gtk.org>
[merged from stable] [merged from stable]

View File

@ -97,6 +97,7 @@ struct _GMarkupParseContext
guint document_empty : 1; guint document_empty : 1;
guint parsing : 1; guint parsing : 1;
gint balance;
}; };
/** /**
@ -154,6 +155,8 @@ g_markup_parse_context_new (const GMarkupParser *parser,
context->document_empty = TRUE; context->document_empty = TRUE;
context->parsing = FALSE; context->parsing = FALSE;
context->balance = 0;
return context; return context;
} }
@ -722,8 +725,10 @@ find_current_text_end (GMarkupParseContext *context)
p = context->current_text; p = context->current_text;
next = g_utf8_find_next_char (p, end); next = g_utf8_find_next_char (p, end);
while (next) while (next && *next)
{ {
if (p == next)
next++;
p = next; p = next;
next = g_utf8_find_next_char (p, end); next = g_utf8_find_next_char (p, end);
} }
@ -963,6 +968,7 @@ g_markup_parse_context_parse (GMarkupParseContext *context,
const gchar *openangle = "<"; const gchar *openangle = "<";
add_to_partial (context, openangle, openangle + 1); add_to_partial (context, openangle, openangle + 1);
context->start = context->iter; context->start = context->iter;
context->balance = 1;
context->state = STATE_INSIDE_PASSTHROUGH; context->state = STATE_INSIDE_PASSTHROUGH;
} }
else if (*context->iter == '/') else if (*context->iter == '/')
@ -1498,8 +1504,23 @@ g_markup_parse_context_parse (GMarkupParseContext *context,
/* Possible next state: AFTER_CLOSE_ANGLE */ /* Possible next state: AFTER_CLOSE_ANGLE */
do do
{ {
if (*context->iter == '<')
context->balance++;
if (*context->iter == '>') if (*context->iter == '>')
break; {
context->balance--;
add_to_partial (context, context->start, context->iter);
context->start = context->iter;
if ((g_str_has_prefix (context->partial_chunk->str, "<?")
&& g_str_has_suffix (context->partial_chunk->str, "?")) ||
(g_str_has_prefix (context->partial_chunk->str, "<!--")
&& g_str_has_suffix (context->partial_chunk->str, "--")) ||
(g_str_has_prefix (context->partial_chunk->str, "<![CDATA[")
&& g_str_has_suffix (context->partial_chunk->str, "]]")) ||
(g_str_has_prefix (context->partial_chunk->str, "<!DOCTYPE")
&& context->balance == 0))
break;
}
} }
while (advance_char (context)); while (advance_char (context));

View File

@ -61,7 +61,7 @@ text_handler (GMarkupParseContext *context,
GError **error) GError **error)
{ {
indent (0); indent (0);
printf ("TEXT '%s'\n", text); printf ("TEXT '%.*s'\n", (int)text_len, text);
} }
@ -74,7 +74,7 @@ passthrough_handler (GMarkupParseContext *context,
{ {
indent (0); indent (0);
printf ("PASS '%s'\n", passthrough_text); printf ("PASS '%.*s'\n", (int)text_len, passthrough_text);
} }
static void static void
@ -200,3 +200,4 @@ main (int argc,
return 1; return 1;
} }
} }

View File

@ -0,0 +1 @@
<foo>gedit&</foo>

Binary file not shown.

View File

@ -0,0 +1,2 @@
<?xml version="1.0" ?>
<foo></foo>

View File

@ -0,0 +1,4 @@
<!DOCTYPE foo "foo" [
<!ELEMENT foo ANY >
]>
<foo></foo>

View File

@ -0,0 +1,2 @@
<!-- a comment -->
<foo></foo>

View File

@ -0,0 +1 @@
<foo><![CDATA[ some <<<<>>>> CDATA ]]></foo>

View File

@ -9,6 +9,9 @@ fail ()
for I in $srcdir/markups/fail-*.gmarkup; do for I in $srcdir/markups/fail-*.gmarkup; do
echo "Parsing $I, should fail" echo "Parsing $I, should fail"
./markup-test $I > /dev/null && fail "failed to generate error on $I" ./markup-test $I > /dev/null && fail "failed to generate error on $I"
if test "$?" != "1"; then
fail "unexpected error on $I"
fi
done done
for I in $srcdir/markups/valid-*.gmarkup; do for I in $srcdir/markups/valid-*.gmarkup; do