Nikolay Sivov : xmllite: Improve GetValue() for namespace definition nodes.
Alexandre Julliard
julliard at winehq.org
Fri Dec 9 13:37:34 CST 2016
Module: wine
Branch: master
Commit: 20c575e81fdf2038a37eae2ac9bdb809a2542de8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=20c575e81fdf2038a37eae2ac9bdb809a2542de8
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Dec 9 16:38:30 2016 +0300
xmllite: Improve GetValue() for namespace definition nodes.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/xmllite/reader.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index 24a061c..47649f5 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -3002,6 +3002,18 @@ static HRESULT WINAPI xmlreader_GetPrefix(IXmlReader* iface, LPCWSTR *prefix, UI
return S_OK;
}
+static BOOL is_namespace_definition(xmlreader *reader)
+{
+ const strval *local = &reader->strvalues[StringValue_LocalName];
+ const strval *prefix = &reader->strvalues[StringValue_Prefix];
+
+ if (reader_get_nodetype(reader) != XmlNodeType_Attribute)
+ return FALSE;
+
+ return ((strval_eq(reader, prefix, &strval_empty) && strval_eq(reader, local, &strval_xmlns)) ||
+ strval_eq(reader, prefix, &strval_xmlns));
+}
+
static HRESULT WINAPI xmlreader_GetValue(IXmlReader* iface, const WCHAR **value, UINT *len)
{
xmlreader *reader = impl_from_IXmlReader(iface);
@@ -3032,6 +3044,18 @@ static HRESULT WINAPI xmlreader_GetValue(IXmlReader* iface, const WCHAR **value,
val->str = ptr;
}
+ /* For namespace definition attributes return values from namespace list */
+ if (is_namespace_definition(reader)) {
+ const strval *local = &reader->strvalues[StringValue_LocalName];
+ struct ns *ns;
+
+ ns = reader_lookup_ns(reader, local);
+ if (!ns)
+ ns = reader_lookup_nsdef(reader);
+
+ val = &ns->uri;
+ }
+
*value = val->str;
if (len) *len = val->len;
return S_OK;
More information about the wine-cvs
mailing list