Module: wine Branch: master Commit: 7447145d647c8d8eccb3f5b536ad7c55488298d9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7447145d647c8d8eccb3f5b536...
Author: Jacek Caban jacek@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)