[2/2] xmllite: Reader should set starting string offsets when encoding is being parsed.
Dmitry Timoshkov
dmitry at baikal.ru
Wed Feb 12 01:58:06 CST 2014
It's still not clear to me why reader_set_strvalue() differentiates
StringValue_Value type and sets v->str to NULL while v->start may
point to wrong offset for instance for values initialized by
reader_init_cstrvalue(), and MoveToNextAttribute would not be able
to figure that out.
---
dlls/xmllite/reader.c | 3 +++
dlls/xmllite/tests/reader.c | 4 ----
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index a0e95b4..6d20324 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -1071,6 +1071,8 @@ static HRESULT reader_parse_encname(xmlreader *reader, strval *val)
if ((*start < 'A' || *start > 'Z') && (*start < 'a' || *start > 'z'))
return WC_E_ENCNAME;
+ val->start = reader_get_cur(reader);
+
ptr = start;
while (is_wchar_encname(*++ptr))
;
@@ -1100,6 +1102,7 @@ static HRESULT reader_parse_encdecl(xmlreader *reader)
if (reader_cmp(reader, encodingW)) return S_FALSE;
name.str = reader_get_ptr(reader);
+ name.start = reader_get_cur(reader);
name.len = 8;
/* skip 'encoding' */
reader_skipn(reader, 8);
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index ad9b3a2..312516b 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -752,10 +752,6 @@ static void test_read_xmldeclaration(void)
hr = IXmlReader_GetValue(reader, &val, &len);
ok(hr == S_OK, "got %08x\n", hr);
ok(len == lstrlenW(name_val[i].val), "expected %u, got %u\n", lstrlenW(name_val[i].val), len);
- if (i == 1)
-todo_wine
- ok(!lstrcmpW(name_val[i].val, val), "expected %s, got %s\n", wine_dbgstr_w(name_val[i].val), wine_dbgstr_w(val));
- else
ok(!lstrcmpW(name_val[i].val, val), "expected %s, got %s\n", wine_dbgstr_w(name_val[i].val), wine_dbgstr_w(val));
hr = IXmlReader_MoveToNextAttribute(reader);
--
1.8.5.4
More information about the wine-patches
mailing list