[ros-diffs] [cwittich] 45908: [MSXML3] sync msxml3 to wine 1.1.40

cwittich at svn.reactos.org cwittich at svn.reactos.org
Sat Mar 6 09:56:22 CET 2010


Author: cwittich
Date: Sat Mar  6 09:56:21 2010
New Revision: 45908

URL: http://svn.reactos.org/svn/reactos?rev=45908&view=rev
Log:
[MSXML3]
sync msxml3 to wine 1.1.40

Modified:
    trunk/reactos/dll/win32/msxml3/domdoc.c
    trunk/reactos/dll/win32/msxml3/element.c

Modified: trunk/reactos/dll/win32/msxml3/domdoc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msxml3/domdoc.c?rev=45908&r1=45907&r2=45908&view=diff
==============================================================================
--- trunk/reactos/dll/win32/msxml3/domdoc.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msxml3/domdoc.c [iso-8859-1] Sat Mar  6 09:56:21 2010
@@ -2214,7 +2214,7 @@
     return IXMLDocument_Release((IXMLDocument *)This);
 }
 
-#define SAFETY_SUPPORTED_OPTIONS (INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA)
+#define SAFETY_SUPPORTED_OPTIONS (INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA|INTERFACE_USES_SECURITY_MANAGER)
 
 static HRESULT WINAPI xmldoc_Safety_GetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
         DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
@@ -2237,6 +2237,9 @@
 {
     domdoc *This = impl_from_IObjectSafety(iface);
     TRACE("(%p)->(%s %x %x)\n", This, debugstr_guid(riid), dwOptionSetMask, dwEnabledOptions);
+
+    if ((dwOptionSetMask & ~SAFETY_SUPPORTED_OPTIONS) != 0)
+        return E_FAIL;
 
     This->safeopt = dwEnabledOptions & dwOptionSetMask & SAFETY_SUPPORTED_OPTIONS;
     return S_OK;

Modified: trunk/reactos/dll/win32/msxml3/element.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msxml3/element.c?rev=45908&r1=45907&r2=45908&view=diff
==============================================================================
--- trunk/reactos/dll/win32/msxml3/element.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msxml3/element.c [iso-8859-1] Sat Mar  6 09:56:21 2010
@@ -489,32 +489,24 @@
 {
     domelem *This = impl_from_IXMLDOMElement( iface );
     xmlNodePtr element;
-    DWORD len;
-    DWORD offset = 0;
-    LPWSTR str;
+    const xmlChar *prefix;
+    xmlChar *qname;
 
     TRACE("(%p)->(%p)\n", This, p );
+
+    if (!p) return E_INVALIDARG;
 
     element = get_element( This );
     if ( !element )
         return E_FAIL;
 
-    len = MultiByteToWideChar( CP_UTF8, 0, (LPCSTR) element->name, -1, NULL, 0 );
-    if (element->ns)
-        len += MultiByteToWideChar( CP_UTF8, 0, (LPCSTR) element->ns->prefix, -1, NULL, 0 );
-    str = heap_alloc( len * sizeof (WCHAR) );
-    if ( !str )
-        return E_OUTOFMEMORY;
-    if (element->ns)
-    {
-        offset = MultiByteToWideChar( CP_UTF8, 0, (LPCSTR) element->ns->prefix, -1, str, len );
-        str[offset - 1] = ':';
-    }
-    MultiByteToWideChar( CP_UTF8, 0, (LPCSTR) element->name, -1, str + offset, len - offset );
-    *p = SysAllocString( str );
-    heap_free( str );
-
-    return S_OK;
+    prefix = element->ns ? element->ns->prefix : NULL;
+    qname = xmlBuildQName(element->name, prefix, NULL, 0);
+
+    *p = bstr_from_xmlChar(qname);
+    if (qname != element->name) xmlFree(qname);
+
+    return *p ? S_OK : E_OUTOFMEMORY;
 }
 
 static HRESULT WINAPI domelem_getAttribute(




More information about the Ros-diffs mailing list