[MSXML3]
authorChristoph von Wittich <christoph_vw@reactos.org>
Sat, 6 Mar 2010 08:56:21 +0000 (08:56 +0000)
committerChristoph von Wittich <christoph_vw@reactos.org>
Sat, 6 Mar 2010 08:56:21 +0000 (08:56 +0000)
sync msxml3 to wine 1.1.40

svn path=/trunk/; revision=45908

reactos/dll/win32/msxml3/domdoc.c
reactos/dll/win32/msxml3/element.c

index 41c1f41..a29e9b2 100644 (file)
@@ -2214,7 +2214,7 @@ static ULONG WINAPI xmldoc_Safety_Release(IObjectSafety *iface)
     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)
@@ -2238,6 +2238,9 @@ static HRESULT WINAPI xmldoc_Safety_SetInterfaceSafetyOptions(IObjectSafety *ifa
     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;
 }
index 0154770..b6caf73 100644 (file)
@@ -489,32 +489,24 @@ static HRESULT WINAPI domelem_get_tagName(
 {
     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 );
+    prefix = element->ns ? element->ns->prefix : NULL;
+    qname = xmlBuildQName(element->name, prefix, NULL, 0);
 
-    return S_OK;
+    *p = bstr_from_xmlChar(qname);
+    if (qname != element->name) xmlFree(qname);
+
+    return *p ? S_OK : E_OUTOFMEMORY;
 }
 
 static HRESULT WINAPI domelem_getAttribute(