Jacek Caban : msxml3: Optimize bstr_from_xmlChar implementation.

Alexandre Julliard julliard at winehq.org
Fri Aug 14 09:00:51 CDT 2009


Module: wine
Branch: master
Commit: 7447145d647c8d8eccb3f5b536ad7c55488298d9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7447145d647c8d8eccb3f5b536ad7c55488298d9

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Aug 14 12:23:05 2009 +0200

msxml3: Optimize bstr_from_xmlChar implementation.

---

 dlls/msxml3/msxml_private.h |   15 ++++++++++++++-
 dlls/msxml3/node.c          |   19 -------------------
 2 files changed, 14 insertions(+), 20 deletions(-)

diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index 917543d..357810d 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -59,7 +59,6 @@ xmlNodePtr xmlNodePtr_from_domnode( IXMLDOMNode *iface, xmlElementType type );
 
 /* helpers */
 extern xmlChar *xmlChar_from_wchar( LPWSTR str );
-extern BSTR bstr_from_xmlChar( const xmlChar *buf );
 
 extern LONG xmldoc_add_ref( xmlDocPtr doc );
 extern LONG xmldoc_release( xmlDocPtr doc );
@@ -87,6 +86,20 @@ static inline xmlnode *impl_from_IXMLDOMNode( IXMLDOMNode *iface )
 
 extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument2 **document);
 
+static inline BSTR bstr_from_xmlChar(const xmlChar *str)
+{
+    BSTR ret = NULL;
+
+    if(str) {
+        DWORD len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)str, -1, NULL, 0);
+        ret = SysAllocStringLen(NULL, len-1);
+        if(ret)
+            MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)str, -1, ret, len);
+    }
+
+    return ret;
+}
+
 #endif
 
 void* libxslt_handle;
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 19fa4c5..1841e6e 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -247,25 +247,6 @@ static HRESULT WINAPI xmlnode_get_nodeName(
     return S_OK;
 }
 
-BSTR bstr_from_xmlChar( const xmlChar *buf )
-{
-    DWORD len;
-    LPWSTR str;
-    BSTR bstr;
-
-    if ( !buf )
-        return NULL;
-
-    len = MultiByteToWideChar( CP_UTF8, 0, (LPCSTR) buf, -1, NULL, 0 );
-    str = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) );
-    if ( !str )
-        return NULL;
-    MultiByteToWideChar( CP_UTF8, 0, (LPCSTR) buf, -1, str, len );
-    bstr = SysAllocString( str );
-    HeapFree( GetProcessHeap(), 0, str );
-    return bstr;
-}
-
 static HRESULT WINAPI xmlnode_get_nodeValue(
     IXMLDOMNode *iface,
     VARIANT* value)




More information about the wine-cvs mailing list