From: Matthias Clasen Date: Sat, 9 Feb 2002 22:08:10 +0000 (+0000) Subject: Test attribute value delimiters. X-Git-Tag: GLIB_1_3_14~23 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b08db9f35e67f5fe6eb5e9f889d185975fc8ecd8;p=platform%2Fupstream%2Fglib.git Test attribute value delimiters. * tests/markups/valid-4.gmarkup: Test attribute value delimiters. * glib/gmarkup.c (g_markup_parse_context_parse): Support ' and " as attribute value delimiters. (#70677) --- diff --git a/ChangeLog b/ChangeLog index 0f6a28a..2a100e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 0f6a28a..2a100e4 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 0f6a28a..2a100e4 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 0f6a28a..2a100e4 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 0f6a28a..2a100e4 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 0f6a28a..2a100e4 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 0f6a28a..2a100e4 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 0f6a28a..2a100e4 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +2002-02-09 Matthias Clasen + + * tests/markups/valid-4.gmarkup: Test attribute value delimiters. + + * glib/gmarkup.c (g_markup_parse_context_parse): Support + ' and " as attribute value delimiters. (#70677) + 2002-02-09 Sebastian Wilhelmi * configure.in: Make --disable-threads work again. (#71034) diff --git a/glib/gmarkup.c b/glib/gmarkup.c index 4381bdb..4386b04 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -48,7 +48,8 @@ typedef enum STATE_INSIDE_ATTRIBUTE_NAME, STATE_BETWEEN_ATTRIBUTES, STATE_AFTER_ATTRIBUTE_EQUALS_SIGN, - STATE_INSIDE_ATTRIBUTE_VALUE, + STATE_INSIDE_ATTRIBUTE_VALUE_SQ, + STATE_INSIDE_ATTRIBUTE_VALUE_DQ, STATE_INSIDE_TEXT, STATE_AFTER_CLOSE_TAG_SLASH, STATE_INSIDE_CLOSE_TAG_NAME, @@ -1213,11 +1214,17 @@ g_markup_parse_context_parse (GMarkupParseContext *context, break; case STATE_AFTER_ATTRIBUTE_EQUALS_SIGN: - /* Possible next state: INSIDE_ATTRIBUTE_VALUE */ + /* Possible next state: INSIDE_ATTRIBUTE_VALUE_[SQ/DQ] */ if (*context->iter == '"') { advance_char (context); - context->state = STATE_INSIDE_ATTRIBUTE_VALUE; + context->state = STATE_INSIDE_ATTRIBUTE_VALUE_DQ; + context->start = context->iter; + } + else if (*context->iter == '\'') + { + advance_char (context); + context->state = STATE_INSIDE_ATTRIBUTE_VALUE_SQ; context->start = context->iter; } else @@ -1235,15 +1242,28 @@ g_markup_parse_context_parse (GMarkupParseContext *context, } break; - case STATE_INSIDE_ATTRIBUTE_VALUE: + case STATE_INSIDE_ATTRIBUTE_VALUE_SQ: + case STATE_INSIDE_ATTRIBUTE_VALUE_DQ: /* Possible next states: BETWEEN_ATTRIBUTES */ - do - { - if (*context->iter == '"') - break; - } - while (advance_char (context)); - + { + gchar delim; + + if (context->state == STATE_INSIDE_ATTRIBUTE_VALUE_SQ) + { + delim = '\''; + } + else + { + delim = '"'; + } + + do + { + if (*context->iter == delim) + break; + } + while (advance_char (context)); + } if (context->iter == context->current_text_end) { /* The value hasn't necessarily ended. Merge with @@ -1599,7 +1619,8 @@ g_markup_parse_context_end_parse (GMarkupParseContext *context, "following an attribute name; no attribute value")); break; - case STATE_INSIDE_ATTRIBUTE_VALUE: + case STATE_INSIDE_ATTRIBUTE_VALUE_SQ: + case STATE_INSIDE_ATTRIBUTE_VALUE_DQ: set_error (context, error, G_MARKUP_ERROR_PARSE, _("Document ended unexpectedly while inside an attribute " "value")); diff --git a/tests/markups/valid-4.gmarkup b/tests/markups/valid-4.gmarkup new file mode 100644 index 0000000..2036162 --- /dev/null +++ b/tests/markups/valid-4.gmarkup @@ -0,0 +1,8 @@ + + + + + + + +