From: Matthias Clasen Date: Sat, 18 May 2002 22:06:54 +0000 (+0000) Subject: New testcases. X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=60f59976d909a2d77a47ef09140ffcdac2187d92;p=dana%2Fcg-glib.git New testcases. 2002-05-18 Matthias Clasen * 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) --- diff --git a/ChangeLog b/ChangeLog index 024e7a57..311a2c73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * 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 [merged from stable] diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * 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 [merged from stable] diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * 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 [merged from stable] diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * 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 [merged from stable] diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * 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 [merged from stable] diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * 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 [merged from stable] diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * 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 [merged from stable] diff --git a/glib/gmarkup.c b/glib/gmarkup.c index 8f5c6b86..f7a2cbf4 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -97,6 +97,7 @@ struct _GMarkupParseContext guint document_empty : 1; guint parsing : 1; + gint balance; }; /** @@ -154,6 +155,8 @@ g_markup_parse_context_new (const GMarkupParser *parser, context->document_empty = TRUE; context->parsing = FALSE; + context->balance = 0; + return context; } @@ -722,8 +725,10 @@ find_current_text_end (GMarkupParseContext *context) p = context->current_text; next = g_utf8_find_next_char (p, end); - while (next) + while (next && *next) { + if (p == next) + next++; p = next; next = g_utf8_find_next_char (p, end); } @@ -963,6 +968,7 @@ g_markup_parse_context_parse (GMarkupParseContext *context, const gchar *openangle = "<"; add_to_partial (context, openangle, openangle + 1); context->start = context->iter; + context->balance = 1; context->state = STATE_INSIDE_PASSTHROUGH; } else if (*context->iter == '/') @@ -1493,13 +1499,28 @@ g_markup_parse_context_parse (GMarkupParseContext *context, g_free (close_name); } break; - + case STATE_INSIDE_PASSTHROUGH: /* Possible next state: AFTER_CLOSE_ANGLE */ do { - if (*context->iter == '>') - break; + if (*context->iter == '<') + context->balance++; + if (*context->iter == '>') + { + context->balance--; + add_to_partial (context, context->start, context->iter); + context->start = context->iter; + if ((g_str_has_prefix (context->partial_chunk->str, "partial_chunk->str, "?")) || + (g_str_has_prefix (context->partial_chunk->str, " + diff --git a/tests/markups/valid-8.gmarkup b/tests/markups/valid-8.gmarkup new file mode 100644 index 00000000..a75aee05 --- /dev/null +++ b/tests/markups/valid-8.gmarkup @@ -0,0 +1 @@ +>>> CDATA ]]> diff --git a/tests/run-markup-tests.sh b/tests/run-markup-tests.sh index 2078330e..fb650862 100755 --- a/tests/run-markup-tests.sh +++ b/tests/run-markup-tests.sh @@ -9,6 +9,9 @@ fail () for I in $srcdir/markups/fail-*.gmarkup; do echo "Parsing $I, should fail" ./markup-test $I > /dev/null && fail "failed to generate error on $I" + if test "$?" != "1"; then + fail "unexpected error on $I" + fi done for I in $srcdir/markups/valid-*.gmarkup; do