xmllite/reader: Return correct error for multiple colons in qualified name.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
3b83a44639
commit
62a41d035c
|
@ -1838,7 +1838,7 @@ static HRESULT reader_parse_dtd(xmlreader *reader)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [11 NS] LocalPart ::= NCName */
|
/* [11 NS] LocalPart ::= NCName */
|
||||||
static HRESULT reader_parse_local(xmlreader *reader, strval *local)
|
static HRESULT reader_parse_local(xmlreader *reader, strval *local, BOOL check_for_separator)
|
||||||
{
|
{
|
||||||
WCHAR *ptr;
|
WCHAR *ptr;
|
||||||
UINT start;
|
UINT start;
|
||||||
|
@ -1860,6 +1860,9 @@ static HRESULT reader_parse_local(xmlreader *reader, strval *local)
|
||||||
ptr = reader_get_ptr(reader);
|
ptr = reader_get_ptr(reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (check_for_separator && *ptr == ':')
|
||||||
|
return NC_E_QNAMECOLON;
|
||||||
|
|
||||||
if (is_reader_pending(reader))
|
if (is_reader_pending(reader))
|
||||||
{
|
{
|
||||||
reader->resume[XmlReadResume_Local] = start;
|
reader->resume[XmlReadResume_Local] = start;
|
||||||
|
@ -1898,7 +1901,7 @@ static HRESULT reader_parse_qname(xmlreader *reader, strval *prefix, strval *loc
|
||||||
|
|
||||||
if (reader->resume[XmlReadResume_Local])
|
if (reader->resume[XmlReadResume_Local])
|
||||||
{
|
{
|
||||||
hr = reader_parse_local(reader, local);
|
hr = reader_parse_local(reader, local, FALSE);
|
||||||
if (FAILED(hr)) return hr;
|
if (FAILED(hr)) return hr;
|
||||||
|
|
||||||
reader_init_strvalue(reader->resume[XmlReadResume_Name],
|
reader_init_strvalue(reader->resume[XmlReadResume_Name],
|
||||||
|
@ -1923,7 +1926,7 @@ static HRESULT reader_parse_qname(xmlreader *reader, strval *prefix, strval *loc
|
||||||
|
|
||||||
/* skip ':' */
|
/* skip ':' */
|
||||||
reader_skipn(reader, 1);
|
reader_skipn(reader, 1);
|
||||||
hr = reader_parse_local(reader, local);
|
hr = reader_parse_local(reader, local, TRUE);
|
||||||
if (FAILED(hr)) return hr;
|
if (FAILED(hr)) return hr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -1415,6 +1415,8 @@ static struct test_entry element_tests[] = {
|
||||||
{ "<a >", "a", "", S_OK },
|
{ "<a >", "a", "", S_OK },
|
||||||
{ "<a \r \t\n>", "a", "", S_OK },
|
{ "<a \r \t\n>", "a", "", S_OK },
|
||||||
{ "</a>", NULL, NULL, NC_E_QNAMECHARACTER },
|
{ "</a>", NULL, NULL, NC_E_QNAMECHARACTER },
|
||||||
|
{ "<a:b:c />", NULL, NULL, NC_E_QNAMECOLON },
|
||||||
|
{ "<:b:c />", NULL, NULL, NC_E_QNAMECHARACTER },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue