mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-12 18:55:12 +01:00
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:
parent
ed8f19b4c6
commit
60f59976d9
18
ChangeLog
18
ChangeLog
@ -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]
|
||||||
|
@ -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]
|
||||||
|
@ -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]
|
||||||
|
@ -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]
|
||||||
|
@ -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]
|
||||||
|
@ -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]
|
||||||
|
@ -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]
|
||||||
|
@ -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));
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
tests/markups/fail-35.gmarkup
Normal file
1
tests/markups/fail-35.gmarkup
Normal file
@ -0,0 +1 @@
|
|||||||
|
<foo>gedit&</foo>
|
BIN
tests/markups/fail-36.gmarkup
Normal file
BIN
tests/markups/fail-36.gmarkup
Normal file
Binary file not shown.
2
tests/markups/valid-5.gmarkup
Normal file
2
tests/markups/valid-5.gmarkup
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<foo></foo>
|
4
tests/markups/valid-6.gmarkup
Normal file
4
tests/markups/valid-6.gmarkup
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<!DOCTYPE foo "foo" [
|
||||||
|
<!ELEMENT foo ANY >
|
||||||
|
]>
|
||||||
|
<foo></foo>
|
2
tests/markups/valid-7.gmarkup
Normal file
2
tests/markups/valid-7.gmarkup
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<!-- a comment -->
|
||||||
|
<foo></foo>
|
1
tests/markups/valid-8.gmarkup
Normal file
1
tests/markups/valid-8.gmarkup
Normal file
@ -0,0 +1 @@
|
|||||||
|
<foo><![CDATA[ some <<<<>>>> CDATA ]]></foo>
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user