sync msxml3 to wine 1.1.14

svn path=/trunk/; revision=39221
This commit is contained in:
Christoph von Wittich 2009-01-31 11:27:22 +00:00
parent b0bff7e4d7
commit 0704f1af38
10 changed files with 90 additions and 53 deletions

View file

@ -520,7 +520,7 @@ static HRESULT WINAPI domcdata_get_length(
long *len)
{
domcdata *This = impl_from_IXMLDOMCDATASection( iface );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( (IXMLDOMNode*)This->node );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( This->node );
xmlChar *pContent;
long nLength = 0;
@ -546,7 +546,7 @@ static HRESULT WINAPI domcdata_substringData(
long offset, long count, BSTR *p)
{
domcdata *This = impl_from_IXMLDOMCDATASection( iface );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( (IXMLDOMNode*)This->node );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( This->node );
xmlChar *pContent;
long nLength = 0;
HRESULT hr = S_FALSE;
@ -591,7 +591,7 @@ static HRESULT WINAPI domcdata_appendData(
BSTR p)
{
domcdata *This = impl_from_IXMLDOMCDATASection( iface );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( (IXMLDOMNode*)This->node );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( This->node );
xmlChar *pContent;
HRESULT hr = S_FALSE;
@ -601,7 +601,7 @@ static HRESULT WINAPI domcdata_appendData(
if(p == NULL || SysStringLen(p) == 0)
return S_OK;
pContent = xmlChar_from_wchar( (WCHAR*)p );
pContent = xmlChar_from_wchar( p );
if(pContent)
{
if(xmlTextConcat(pDOMNode->node, pContent, SysStringLen(p) ) == 0)
@ -621,7 +621,7 @@ static HRESULT WINAPI domcdata_insertData(
long offset, BSTR p)
{
domcdata *This = impl_from_IXMLDOMCDATASection( iface );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( (IXMLDOMNode*)This->node );
xmlnode *pDOMNode = impl_from_IXMLDOMNode( This->node );
xmlChar *pXmlContent;
BSTR sNewString;
HRESULT hr = S_FALSE;
@ -667,7 +667,7 @@ static HRESULT WINAPI domcdata_insertData(
sNewString[nLengthP + nLength] = 0;
str = xmlChar_from_wchar((WCHAR*)sNewString);
str = xmlChar_from_wchar(sNewString);
if(str)
{
xmlNodeSetContent(pDOMNode->node, str);

View file

@ -595,7 +595,7 @@ static HRESULT WINAPI domcomment_appendData(
if(p == NULL || SysStringLen(p) == 0)
return S_OK;
pContent = xmlChar_from_wchar( (WCHAR*)p );
pContent = xmlChar_from_wchar( p );
if(pContent)
{
/* Older versions of libxml < 2.6.27 didn't correctly support
@ -675,7 +675,7 @@ static HRESULT WINAPI domcomment_insertData(
sNewString[nLengthP + nLength] = 0;
str = xmlChar_from_wchar((WCHAR*)sNewString);
str = xmlChar_from_wchar(sNewString);
if(str)
{
xmlNodeSetContent(pDOMNode->node, str);

View file

@ -357,8 +357,26 @@ static HRESULT WINAPI xmldoc_IPersistStream_Load(
static HRESULT WINAPI xmldoc_IPersistStream_Save(
IPersistStream *iface, LPSTREAM pStm, BOOL fClearDirty)
{
FIXME("(%p, %p, %d): stub!\n", iface, pStm, fClearDirty);
return E_NOTIMPL;
domdoc *This = impl_from_IPersistStream(iface);
HRESULT hr;
BSTR xmlString;
TRACE("(%p, %p, %d)\n", iface, pStm, fClearDirty);
hr = IXMLDOMNode_get_xml( This->node, &xmlString );
if(hr == S_OK)
{
DWORD count;
DWORD len = strlenW(xmlString) * sizeof(WCHAR);
hr = IStream_Write( pStm, xmlString, len, &count );
SysFreeString(xmlString);
}
TRACE("ret 0x%08x\n", hr);
return hr;
}
static HRESULT WINAPI xmldoc_IPersistStream_GetSizeMax(
@ -441,11 +459,11 @@ static HRESULT WINAPI domdoc_QueryInterface( IXMLDOMDocument2 *iface, REFIID rii
}
else if (IsEqualGUID(&IID_IPersistStream, riid))
{
*ppvObject = (IPersistStream*)&(This->lpvtblIPersistStream);
*ppvObject = &(This->lpvtblIPersistStream);
}
else if (IsEqualGUID(&IID_IObjectWithSite, riid))
{
*ppvObject = (IObjectWithSite*)&(This->lpvtblIObjectWithSite);
*ppvObject = &(This->lpvtblIObjectWithSite);
}
else if( IsEqualGUID( riid, &IID_ISupportErrorInfo ))
{
@ -1023,7 +1041,7 @@ static HRESULT WINAPI domdoc_createElement(
TRACE("%p->(%s,%p)\n", iface, debugstr_w(tagname), element);
xml_name = xmlChar_from_wchar((WCHAR*)tagname);
xml_name = xmlChar_from_wchar(tagname);
xmlnode = xmlNewDocNode(get_doc(This), NULL, xml_name, NULL);
xmldoc_add_orphan(xmlnode->doc, xmlnode);
@ -1080,7 +1098,7 @@ static HRESULT WINAPI domdoc_createTextNode(
*text = NULL;
xml_content = xmlChar_from_wchar((WCHAR*)data);
xml_content = xmlChar_from_wchar(data);
xmlnode = xmlNewText(xml_content);
HeapFree(GetProcessHeap(), 0, xml_content);
@ -1112,7 +1130,7 @@ static HRESULT WINAPI domdoc_createComment(
*comment = NULL;
xml_content = xmlChar_from_wchar((WCHAR*)data);
xml_content = xmlChar_from_wchar(data);
xmlnode = xmlNewComment(xml_content);
HeapFree(GetProcessHeap(), 0, xml_content);
@ -1144,7 +1162,7 @@ static HRESULT WINAPI domdoc_createCDATASection(
*cdata = NULL;
xml_content = xmlChar_from_wchar((WCHAR*)data);
xml_content = xmlChar_from_wchar(data);
xmlnode = xmlNewCDataBlock(get_doc( This ), xml_content, strlen( (char*)xml_content) );
HeapFree(GetProcessHeap(), 0, xml_content);
@ -1179,8 +1197,8 @@ static HRESULT WINAPI domdoc_createProcessingInstruction(
if(!target || lstrlenW(target) == 0)
return E_FAIL;
xml_target = xmlChar_from_wchar((WCHAR*)target);
xml_content = xmlChar_from_wchar((WCHAR*)data);
xml_target = xmlChar_from_wchar(target);
xml_content = xmlChar_from_wchar(data);
xmlnode = xmlNewDocPI(get_doc(This), xml_target, xml_content);
xmldoc_add_orphan(xmlnode->doc, xmlnode);
@ -1214,7 +1232,7 @@ static HRESULT WINAPI domdoc_createAttribute(
*attribute = NULL;
xml_name = xmlChar_from_wchar((WCHAR*)name);
xml_name = xmlChar_from_wchar(name);
xmlnode = (xmlNode *)xmlNewProp(NULL, xml_name, NULL);
HeapFree(GetProcessHeap(), 0, xml_name);
@ -1246,7 +1264,7 @@ static HRESULT WINAPI domdoc_createEntityReference(
*entityRef = NULL;
xml_name = xmlChar_from_wchar((WCHAR*)name);
xml_name = xmlChar_from_wchar(name);
xmlnode = xmlNewReference(get_doc( This ), xml_name );
HeapFree(GetProcessHeap(), 0, xml_name);
@ -1312,13 +1330,16 @@ static HRESULT WINAPI domdoc_createNode(
TRACE("(%p)->(type,%s,%s,%p)\n", This, debugstr_w(name), debugstr_w(namespaceURI), node);
if(namespaceURI && namespaceURI[0])
FIXME("nodes with namespaces currently not supported.\n");
hr = get_node_type(Type, &node_type);
if(FAILED(hr))
return hr;
TRACE("node_type %d\n", node_type);
xml_name = xmlChar_from_wchar((WCHAR*)name);
xml_name = xmlChar_from_wchar(name);
switch(node_type)
{
@ -2189,7 +2210,7 @@ HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument2 **docu
doc->lpvtblIObjectSafety = &domdocObjectSafetyVtbl;
doc->lpvtblISupportErrorInfo = &support_error_vtbl;
doc->ref = 1;
doc->async = 0;
doc->async = VARIANT_TRUE;
doc->validating = 0;
doc->resolving = 0;
doc->preserving = 0;
@ -2258,7 +2279,7 @@ IUnknown* create_domdoc( xmlNodePtr document )
if (FAILED(hr))
return NULL;
return (IUnknown*)pObj;
return pObj;
}
#else

View file

@ -644,6 +644,7 @@ static HRESULT WINAPI domelem_getElementsByTagName(
{
domelem *This = impl_from_IXMLDOMElement( iface );
LPWSTR szPattern;
xmlNodePtr element;
HRESULT hr;
TRACE("(%p)->(%s,%p)\n", This, debugstr_w(bstrName), resultList);
@ -654,7 +655,11 @@ static HRESULT WINAPI domelem_getElementsByTagName(
lstrcpyW(szPattern+3, bstrName);
TRACE("%s\n", debugstr_w(szPattern));
hr = queryresult_create(get_element(This), szPattern, resultList);
element = get_element(This);
if (!element)
hr = E_FAIL;
else
hr = queryresult_create(element, szPattern, resultList);
HeapFree(GetProcessHeap(), 0, szPattern);
return hr;

View file

@ -345,7 +345,7 @@ static HRESULT WINAPI xmlnode_put_nodeValue(
case XML_PI_NODE:
case XML_TEXT_NODE:
{
str = xmlChar_from_wchar((WCHAR*)V_BSTR(&string_value));
str = xmlChar_from_wchar(V_BSTR(&string_value));
xmlNodeSetContent(This->node, str);
HeapFree(GetProcessHeap(),0,str);
hr = S_OK;
@ -904,7 +904,7 @@ static HRESULT WINAPI xmlnode_put_text(
break;
}
str = xmlChar_from_wchar((WCHAR*)text);
str = xmlChar_from_wchar(text);
/* Escape the string. */
str2 = xmlEncodeEntitiesReentrant(This->node->doc, str);
@ -1060,7 +1060,7 @@ static HRESULT WINAPI xmlnode_put_dataType(
{
xmlNsPtr pNS = NULL;
xmlAttrPtr pAttr = NULL;
xmlChar* str = xmlChar_from_wchar((WCHAR*)dataTypeName);
xmlChar* str = xmlChar_from_wchar(dataTypeName);
pAttr = xmlHasNsProp(This->node, (xmlChar*)"dt",
(xmlChar*)"urn:schemas-microsoft-com:datatypes");

View file

@ -564,6 +564,14 @@ static struct regsvr_coclass const coclass_list[] = {
"Msxml2.SAXXMLReader",
"3.0"
},
{ &CLSID_SAXXMLReader30,
"SAX XML Reader 3.0",
NULL,
"msxml3.dll",
"Both",
"Msxml2.SAXXMLReader",
"3.0"
},
{ NULL } /* list terminator */
};
@ -653,6 +661,16 @@ static struct progid const progid_list[] = {
&CLSID_XMLSchemaCache30,
NULL
},
{ "Msxml2.SAXXMLReader",
"SAX XML Reader",
&CLSID_SAXXMLReader,
"Msxml2.SAXXMLReader.3.0"
},
{ "Msxml2.SAXXMLReader.3.0",
"SAX XML Reader 3.0",
&CLSID_SAXXMLReader30,
NULL
},
{ NULL } /* list terminator */
};

View file

@ -457,9 +457,8 @@ static HRESULT WINAPI ivbsaxattributes_getIndexFromName(
{
saxattributes *This = impl_from_IVBSAXAttributes( iface );
return ISAXAttributes_getIndexFromName(
(ISAXAttributes*)&This->lpSAXAttributesVtbl,
(const WCHAR*)uri, SysStringLen(uri),
(const WCHAR*)localName, SysStringLen(localName), index);
(ISAXAttributes*)&This->lpSAXAttributesVtbl, uri, SysStringLen(uri),
localName, SysStringLen(localName), index);
}
static HRESULT WINAPI ivbsaxattributes_getIndexFromQName(
@ -469,8 +468,8 @@ static HRESULT WINAPI ivbsaxattributes_getIndexFromQName(
{
saxattributes *This = impl_from_IVBSAXAttributes( iface );
return ISAXAttributes_getIndexFromQName(
(ISAXAttributes*)&This->lpSAXAttributesVtbl,
(const WCHAR*)QName, SysStringLen(QName), index);
(ISAXAttributes*)&This->lpSAXAttributesVtbl, QName,
SysStringLen(QName), index);
}
static HRESULT WINAPI ivbsaxattributes_getType(
@ -494,10 +493,8 @@ static HRESULT WINAPI ivbsaxattributes_getTypeFromName(
int len;
saxattributes *This = impl_from_IVBSAXAttributes( iface );
return ISAXAttributes_getTypeFromName(
(ISAXAttributes*)&This->lpSAXAttributesVtbl,
(const WCHAR*)uri, SysStringLen(uri),
(const WCHAR*)localName, SysStringLen(localName),
(const WCHAR**)type, &len);
(ISAXAttributes*)&This->lpSAXAttributesVtbl, uri, SysStringLen(uri),
localName, SysStringLen(localName), (const WCHAR**)type, &len);
}
static HRESULT WINAPI ivbsaxattributes_getTypeFromQName(
@ -508,9 +505,8 @@ static HRESULT WINAPI ivbsaxattributes_getTypeFromQName(
int len;
saxattributes *This = impl_from_IVBSAXAttributes( iface );
return ISAXAttributes_getTypeFromQName(
(ISAXAttributes*)&This->lpSAXAttributesVtbl,
(const WCHAR*)QName, SysStringLen(QName),
(const WCHAR**)type, &len);
(ISAXAttributes*)&This->lpSAXAttributesVtbl, QName,
SysStringLen(QName), (const WCHAR**)type, &len);
}
static HRESULT WINAPI ivbsaxattributes_getValue(
@ -534,10 +530,8 @@ static HRESULT WINAPI ivbsaxattributes_getValueFromName(
int len;
saxattributes *This = impl_from_IVBSAXAttributes( iface );
return ISAXAttributes_getValueFromName(
(ISAXAttributes*)&This->lpSAXAttributesVtbl,
(const WCHAR*)uri, SysStringLen(uri),
(const WCHAR*)localName, SysStringLen(localName),
(const WCHAR**)value, &len);
(ISAXAttributes*)&This->lpSAXAttributesVtbl, uri, SysStringLen(uri),
localName, SysStringLen(localName), (const WCHAR**)value, &len);
}
static HRESULT WINAPI ivbsaxattributes_getValueFromQName(
@ -548,9 +542,8 @@ static HRESULT WINAPI ivbsaxattributes_getValueFromQName(
int len;
saxattributes *This = impl_from_IVBSAXAttributes( iface );
return ISAXAttributes_getValueFromQName(
(ISAXAttributes*)&This->lpSAXAttributesVtbl,
(const WCHAR*)QName, SysStringLen(QName),
(const WCHAR**)value, &len);
(ISAXAttributes*)&This->lpSAXAttributesVtbl, QName,
SysStringLen(QName), (const WCHAR**)value, &len);
}
static const struct IVBSAXAttributesVtbl ivbsaxattributes_vtbl =
@ -1329,7 +1322,7 @@ static void libxmlFatalError(void *ctx, const char *msg, ...)
len = MultiByteToWideChar(CP_UNIXCP, 0, message, -1, NULL, 0);
wszError = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*len);
if(wszError)
MultiByteToWideChar(CP_UNIXCP, 0, message, -1, (LPWSTR)wszError, len);
MultiByteToWideChar(CP_UNIXCP, 0, message, -1, wszError, len);
if(This->vbInterface)
{
@ -2031,7 +2024,7 @@ static HRESULT internal_parse(
hr = SafeArrayGetUBound(V_ARRAY(&varInput), 1, &uBound);
if(hr != S_OK) break;
dataRead = (uBound-lBound)*SafeArrayGetElemsize(V_ARRAY(&varInput));
hr = SafeArrayAccessData(V_ARRAY(&varInput), (void**)&pSAData);
hr = SafeArrayAccessData(V_ARRAY(&varInput), &pSAData);
if(hr != S_OK) break;
hr = internal_parseBuffer(This, pSAData, dataRead, vbInterface);
SafeArrayUnaccessData(V_ARRAY(&varInput));
@ -2267,7 +2260,7 @@ static HRESULT WINAPI saxxmlreader_QueryInterface(IVBSAXXMLReader* iface, REFIID
}
else if( IsEqualGUID( riid, &IID_ISAXXMLReader ))
{
*ppvObject = (ISAXXMLReader*)&This->lpSAXXMLReaderVtbl;
*ppvObject = &This->lpSAXXMLReaderVtbl;
}
else
{

View file

@ -603,7 +603,7 @@ static HRESULT WINAPI domtext_appendData(
if(p == NULL || SysStringLen(p) == 0)
return S_OK;
pContent = xmlChar_from_wchar( (WCHAR*)p );
pContent = xmlChar_from_wchar( p );
if(pContent)
{
if(xmlTextConcat(pDOMNode->node, pContent, SysStringLen(p) ) == 0)
@ -669,7 +669,7 @@ static HRESULT WINAPI domtext_insertData(
sNewString[nLengthP + nLength] = 0;
str = xmlChar_from_wchar((WCHAR*)sNewString);
str = xmlChar_from_wchar(sNewString);
if(str)
{
xmlNodeSetContent(pDOMNode->node, str);

View file

@ -86,7 +86,7 @@ static HRESULT WINAPI xmldoc_QueryInterface(IXMLDocument *iface, REFIID riid, vo
else if (IsEqualGUID(&IID_IPersistStreamInit, riid) ||
IsEqualGUID(&IID_IPersistStream, riid))
{
*ppvObject = (IPersistStreamInit *)&(This->lpvtblIPersistStreamInit);
*ppvObject = &(This->lpvtblIPersistStreamInit);
}
else
{

View file

@ -516,7 +516,7 @@ static HRESULT WINAPI xmlelem_collection_QueryInterface(IXMLElementCollection *i
}
else if (IsEqualGUID(riid, &IID_IEnumVARIANT))
{
*ppvObject = (IEnumVARIANT *)&(This->lpvtblIEnumVARIANT);
*ppvObject = &(This->lpvtblIEnumVARIANT);
}
else
{