[PATCH 2/2] Move string conversion helper to header

Nikolay Sivov nsivov at codeweavers.com
Thu Mar 10 13:15:09 CST 2011


---
 dlls/msxml3/domdoc.c        |    7 ++--
 dlls/msxml3/element.c       |   12 +++---
 dlls/msxml3/msxml_private.h |   85 ++++++++++++++++++++++++-------------------
 dlls/msxml3/node.c          |    8 ++--
 dlls/msxml3/nodemap.c       |   20 ++--------
 dlls/msxml3/schema.c        |    6 ++--
 dlls/msxml3/xmlelem.c       |   10 +++---
 7 files changed, 73 insertions(+), 75 deletions(-)

diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index beec0b4..d27ed02 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -1984,9 +1984,9 @@ static HRESULT WINAPI domdoc_createNode(
         break;
     }
 
-    xml_name = xmlChar_from_wchar(name);
+    xml_name = xmlchar_from_wchar(name);
     /* prevent empty href to be allocated */
-    href = namespaceURI ? xmlChar_from_wchar(namespaceURI) : NULL;
+    href = namespaceURI ? xmlchar_from_wchar(namespaceURI) : NULL;
 
     switch(node_type)
     {
@@ -2853,8 +2853,7 @@ static HRESULT WINAPI domdoc_setProperty(
         pNsList = &(This->properties->selectNsList);
         clear_selectNsList(pNsList);
         heap_free(nsStr);
-        nsStr = xmlChar_from_wchar(bstr);
-
+        nsStr = xmlchar_from_wchar(bstr);
 
         TRACE("Setting SelectionNamespaces property to: %s\n", nsStr);
 
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 4c3a9b3..74a9bb7 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -1056,7 +1056,7 @@ static HRESULT WINAPI domelem_getAttribute(
     V_BSTR(value) = NULL;
     V_VT(value) = VT_NULL;
 
-    xml_name = xmlChar_from_wchar( name );
+    xml_name = xmlchar_from_wchar( name );
 
     if(!xmlValidateNameValue(xml_name))
         hr = E_FAIL;
@@ -1099,8 +1099,8 @@ static HRESULT WINAPI domelem_setAttribute(
         return hr;
     }
 
-    xml_name = xmlChar_from_wchar( name );
-    xml_value = xmlChar_from_wchar( V_BSTR(&var) );
+    xml_name = xmlchar_from_wchar( name );
+    xml_value = xmlchar_from_wchar( V_BSTR(&var) );
 
     if(!xmlSetNsProp(element, NULL,  xml_name, xml_value))
         hr = E_FAIL;
@@ -1153,7 +1153,7 @@ static HRESULT WINAPI domelem_getAttributeNode(
     if ( !element )
         return E_FAIL;
 
-    xml_name = xmlChar_from_wchar(p);
+    xml_name = xmlchar_from_wchar(p);
 
     if(!xmlValidateNameValue(xml_name))
     {
@@ -1228,8 +1228,8 @@ static HRESULT WINAPI domelem_setAttributeNode(
         SysFreeString(prefix);
     }
 
-    name = xmlChar_from_wchar(nameW);
-    value = xmlChar_from_wchar(V_BSTR(&valueW));
+    name = xmlchar_from_wchar(nameW);
+    value = xmlchar_from_wchar(V_BSTR(&valueW));
 
     if (!name || !value)
     {
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index 4e3b35b..71ad59b 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -157,6 +157,43 @@ extern HINSTANCE MSXML_hInstance;
 void init_dispex(DispatchEx*,IUnknown*,dispex_static_data_t*);
 BOOL dispex_query_interface(DispatchEx*,REFIID,void**);
 
+/* memory allocation functions */
+
+static inline void *heap_alloc(size_t len)
+{
+    return HeapAlloc(GetProcessHeap(), 0, len);
+}
+
+static inline void *heap_alloc_zero(size_t len)
+{
+    return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
+}
+
+static inline void *heap_realloc(void *mem, size_t len)
+{
+    return HeapReAlloc(GetProcessHeap(), 0, mem, len);
+}
+
+static inline BOOL heap_free(void *mem)
+{
+    return HeapFree(GetProcessHeap(), 0, mem);
+}
+
+static inline LPWSTR heap_strdupW(LPCWSTR str)
+{
+    LPWSTR ret = NULL;
+
+    if(str) {
+        DWORD size;
+
+        size = (strlenW(str)+1)*sizeof(WCHAR);
+        ret = heap_alloc(size);
+        memcpy(ret, str, size);
+    }
+
+    return ret;
+}
+
 #ifdef HAVE_LIBXML2
 
 extern void schemasInit(void);
@@ -354,6 +391,17 @@ static inline HRESULT return_null_bstr(BSTR *p)
     return S_FALSE;
 }
 
+static inline xmlChar *xmlchar_from_wchar( LPCWSTR str )
+{
+    xmlChar *xmlstr;
+    DWORD len = WideCharToMultiByte( CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL );
+
+    xmlstr = heap_alloc( len );
+    if ( xmlstr )
+        WideCharToMultiByte( CP_UTF8, 0, str, -1, (LPSTR) xmlstr, len, NULL, NULL );
+    return xmlstr;
+}
+
 #endif
 
 extern IXMLDOMParseError *create_parseError( LONG code, BSTR url, BSTR reason, BSTR srcText,
@@ -396,43 +444,6 @@ void detach_bsc(bsc_t*);
 
 const char *debugstr_variant(const VARIANT*);
 
-/* memory allocation functions */
-
-static inline void *heap_alloc(size_t len)
-{
-    return HeapAlloc(GetProcessHeap(), 0, len);
-}
-
-static inline void *heap_alloc_zero(size_t len)
-{
-    return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
-}
-
-static inline void *heap_realloc(void *mem, size_t len)
-{
-    return HeapReAlloc(GetProcessHeap(), 0, mem, len);
-}
-
-static inline BOOL heap_free(void *mem)
-{
-    return HeapFree(GetProcessHeap(), 0, mem);
-}
-
-static inline LPWSTR heap_strdupW(LPCWSTR str)
-{
-    LPWSTR ret = NULL;
-
-    if(str) {
-        DWORD size;
-
-        size = (strlenW(str)+1)*sizeof(WCHAR);
-        ret = heap_alloc(size);
-        memcpy(ret, str, size);
-    }
-
-    return ret;
-}
-
 /* Error Codes - not defined anywhere in the public headers */
 #define E_XML_ELEMENT_UNDECLARED            0xC00CE00D
 #define E_XML_ELEMENT_ID_NOT_FOUND          0xC00CE00E
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 50cb481..a492759 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -162,7 +162,7 @@ HRESULT node_set_content(xmlnode *This, LPCWSTR value)
     xmlChar *str;
 
     TRACE("(%p)->(%s)\n", This, debugstr_w(value));
-    str = xmlChar_from_wchar(value);
+    str = xmlchar_from_wchar(value);
     if(!str)
         return E_OUTOFMEMORY;
 
@@ -176,7 +176,7 @@ static HRESULT node_set_content_escaped(xmlnode *This, LPCWSTR value)
     xmlChar *str, *escaped;
 
     TRACE("(%p)->(%s)\n", This, debugstr_w(value));
-    str = xmlChar_from_wchar(value);
+    str = xmlchar_from_wchar(value);
     if(!str)
         return E_OUTOFMEMORY;
 
@@ -641,7 +641,7 @@ HRESULT node_put_text(xmlnode *This, BSTR text)
 
     TRACE("(%p)->(%s)\n", This, debugstr_w(text));
 
-    str = xmlChar_from_wchar(text);
+    str = xmlchar_from_wchar(text);
 
     /* Escape the string. */
     str2 = xmlEncodeEntitiesReentrant(This->node->doc, str);
@@ -1029,7 +1029,7 @@ HRESULT node_select_nodes(const xmlnode *This, BSTR query, IXMLDOMNodeList **nod
 
     if (!query || !nodes) return E_INVALIDARG;
 
-    str = xmlChar_from_wchar(query);
+    str = xmlchar_from_wchar(query);
     hr = queryresult_create(This->node, str, nodes);
     heap_free(str);
 
diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c
index 20475ca..a504934 100644
--- a/dlls/msxml3/nodemap.c
+++ b/dlls/msxml3/nodemap.c
@@ -189,18 +189,6 @@ static HRESULT WINAPI xmlnodemap_Invoke(
     return hr;
 }
 
-xmlChar *xmlChar_from_wchar( LPCWSTR str )
-{
-    DWORD len;
-    xmlChar *xmlstr;
-
-    len = WideCharToMultiByte( CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL );
-    xmlstr = heap_alloc( len );
-    if ( xmlstr )
-        WideCharToMultiByte( CP_UTF8, 0, str, -1, (LPSTR) xmlstr, len, NULL, NULL );
-    return xmlstr;
-}
-
 static HRESULT WINAPI xmlnodemap_getNamedItem(
     IXMLDOMNamedNodeMap *iface,
     BSTR name,
@@ -334,13 +322,13 @@ static HRESULT WINAPI xmlnodemap_getQualifiedItem(
 
     if (namespaceURI && *namespaceURI)
     {
-        href = xmlChar_from_wchar(namespaceURI);
+        href = xmlchar_from_wchar(namespaceURI);
         if (!href) return E_OUTOFMEMORY;
     }
     else
         href = NULL;
 
-    name = xmlChar_from_wchar(baseName);
+    name = xmlchar_from_wchar(baseName);
     if (!name)
     {
         heap_free(href);
@@ -380,13 +368,13 @@ static HRESULT WINAPI xmlnodemap_removeQualifiedItem(
 
     if (namespaceURI && *namespaceURI)
     {
-        href = xmlChar_from_wchar(namespaceURI);
+        href = xmlchar_from_wchar(namespaceURI);
         if (!href) return E_OUTOFMEMORY;
     }
     else
         href = NULL;
 
-    name = xmlChar_from_wchar(baseName);
+    name = xmlchar_from_wchar(baseName);
     if (!name)
     {
         heap_free(href);
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index e2bf8b3..c13bc27 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -1061,7 +1061,7 @@ static HRESULT WINAPI schema_cache_Invoke(IXMLDOMSchemaCollection2* iface,
 static HRESULT WINAPI schema_cache_add(IXMLDOMSchemaCollection2* iface, BSTR uri, VARIANT var)
 {
     schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    xmlChar* name = uri ? xmlChar_from_wchar(uri) : xmlChar_from_wchar(emptyW);
+    xmlChar* name = uri ? xmlchar_from_wchar(uri) : xmlchar_from_wchar(emptyW);
     TRACE("(%p)->(%s %s)\n", This, debugstr_w(uri), debugstr_variant(&var));
 
     switch (V_VT(&var))
@@ -1162,7 +1162,7 @@ static HRESULT WINAPI schema_cache_get(IXMLDOMSchemaCollection2* iface, BSTR uri
     if (!node)
         return E_POINTER;
 
-    name = uri ? xmlChar_from_wchar(uri) : xmlChar_from_wchar(emptyW);
+    name = uri ? xmlchar_from_wchar(uri) : xmlchar_from_wchar(emptyW);
     entry = (cache_entry*) xmlHashLookup(This->cache, name);
     heap_free(name);
 
@@ -1177,7 +1177,7 @@ static HRESULT WINAPI schema_cache_get(IXMLDOMSchemaCollection2* iface, BSTR uri
 static HRESULT WINAPI schema_cache_remove(IXMLDOMSchemaCollection2* iface, BSTR uri)
 {
     schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
-    xmlChar* name = uri ? xmlChar_from_wchar(uri) : xmlChar_from_wchar(emptyW);
+    xmlChar* name = uri ? xmlchar_from_wchar(uri) : xmlchar_from_wchar(emptyW);
     TRACE("(%p)->(%s)\n", This, wine_dbgstr_w(uri));
 
     xmlHashRemoveEntry(This->cache, name, cache_free);
diff --git a/dlls/msxml3/xmlelem.c b/dlls/msxml3/xmlelem.c
index 9e08cc2..86fa51d 100644
--- a/dlls/msxml3/xmlelem.c
+++ b/dlls/msxml3/xmlelem.c
@@ -237,8 +237,8 @@ static HRESULT WINAPI xmlelem_setAttribute(IXMLElement *iface, BSTR strPropertyN
     if (!strPropertyName || V_VT(&PropertyValue) != VT_BSTR)
         return E_INVALIDARG;
 
-    name = xmlChar_from_wchar(strPropertyName);
-    value = xmlChar_from_wchar(V_BSTR(&PropertyValue));
+    name = xmlchar_from_wchar(strPropertyName);
+    value = xmlchar_from_wchar(V_BSTR(&PropertyValue));
     attr = xmlSetProp(This->node, name, value);
 
     heap_free(name);
@@ -276,7 +276,7 @@ static HRESULT WINAPI xmlelem_getAttribute(IXMLElement *iface, BSTR name,
         xmlAttrPtr attr;
         xmlChar *xml_name;
 
-        xml_name = xmlChar_from_wchar(name);
+        xml_name = xmlchar_from_wchar(name);
         attr = This->node->properties;
         while (attr)
         {
@@ -321,7 +321,7 @@ static HRESULT WINAPI xmlelem_removeAttribute(IXMLElement *iface, BSTR strProper
     if (!strPropertyName)
         return E_INVALIDARG;
 
-    name = xmlChar_from_wchar(strPropertyName);
+    name = xmlchar_from_wchar(strPropertyName);
     attr = xmlHasProp(This->node, name);
     if (!attr)
         goto done;
@@ -414,7 +414,7 @@ static HRESULT WINAPI xmlelem_put_text(IXMLElement *iface, BSTR p)
     if (This->node->type == XML_ELEMENT_NODE)
         return E_NOTIMPL;
 
-    content = xmlChar_from_wchar(p);
+    content = xmlchar_from_wchar(p);
     xmlNodeSetContent(This->node, content);
 
     heap_free(content);
-- 
1.5.6.5



--------------050201000300000503000808--



More information about the wine-patches mailing list