Nikolay Sivov : msxml3: Get rid of libxml2 accessors in ::substringData() for Text, Comment and CDATA nodes.
Alexandre Julliard
julliard at winehq.org
Tue Feb 16 11:44:40 CST 2010
Module: wine
Branch: master
Commit: 3d18a77ae7606a8301b54b52d0cac7f978fd73a6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3d18a77ae7606a8301b54b52d0cac7f978fd73a6
Author: Nikolay Sivov <bunglehead at gmail.com>
Date: Tue Feb 16 02:53:09 2010 +0300
msxml3: Get rid of libxml2 accessors in ::substringData() for Text, Comment and CDATA nodes.
---
dlls/msxml3/cdata.c | 31 ++++++++++++++-----------------
dlls/msxml3/comment.c | 29 +++++++++++++----------------
dlls/msxml3/text.c | 31 ++++++++++++++-----------------
3 files changed, 41 insertions(+), 50 deletions(-)
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c
index 12bc03d..57d601d 100644
--- a/dlls/msxml3/cdata.c
+++ b/dlls/msxml3/cdata.c
@@ -538,11 +538,10 @@ static HRESULT WINAPI domcdata_substringData(
LONG offset, LONG count, BSTR *p)
{
domcdata *This = impl_from_IXMLDOMCDATASection( iface );
- xmlChar *pContent;
- LONG nLength = 0;
- HRESULT hr = S_FALSE;
+ HRESULT hr;
+ BSTR data;
- TRACE("%p\n", iface);
+ TRACE("%p %d %d %p\n", This, offset, count, p);
if(!p)
return E_INVALIDARG;
@@ -552,26 +551,24 @@ static HRESULT WINAPI domcdata_substringData(
return E_INVALIDARG;
if(count == 0)
- return hr;
+ return S_FALSE;
- pContent = xmlNodeGetContent(This->node.node);
- if(pContent)
+ hr = IXMLDOMCDATASection_get_data(iface, &data);
+ if(hr == S_OK)
{
- nLength = xmlStrlen(pContent);
+ LONG len = SysStringLen(data);
- if( offset < nLength)
+ if(offset < len)
{
- BSTR sContent = bstr_from_xmlChar(pContent);
- if(offset + count > nLength)
- *p = SysAllocString(&sContent[offset]);
+ if(offset + count > len)
+ *p = SysAllocString(&data[offset]);
else
- *p = SysAllocStringLen(&sContent[offset], count);
-
- SysFreeString(sContent);
- hr = S_OK;
+ *p = SysAllocStringLen(&data[offset], count);
}
+ else
+ hr = S_FALSE;
- xmlFree(pContent);
+ SysFreeString(data);
}
return hr;
diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c
index c669eac..c4005c2 100644
--- a/dlls/msxml3/comment.c
+++ b/dlls/msxml3/comment.c
@@ -532,11 +532,10 @@ static HRESULT WINAPI domcomment_substringData(
LONG offset, LONG count, BSTR *p)
{
domcomment *This = impl_from_IXMLDOMComment( iface );
- xmlChar *pContent;
- LONG nLength = 0;
- HRESULT hr = S_FALSE;
+ HRESULT hr;
+ BSTR data;
- TRACE("%p %d %d %p\n", iface, offset, count, p);
+ TRACE("%p %d %d %p\n", This, offset, count, p);
if(!p)
return E_INVALIDARG;
@@ -548,24 +547,22 @@ static HRESULT WINAPI domcomment_substringData(
if(count == 0)
return S_FALSE;
- pContent = xmlNodeGetContent(This->node.node);
- if(pContent)
+ hr = IXMLDOMComment_get_data(iface, &data);
+ if(hr == S_OK)
{
- nLength = xmlStrlen(pContent);
+ LONG len = SysStringLen(data);
- if( offset < nLength)
+ if(offset < len)
{
- BSTR sContent = bstr_from_xmlChar(pContent);
- if(offset + count > nLength)
- *p = SysAllocString(&sContent[offset]);
+ if(offset + count > len)
+ *p = SysAllocString(&data[offset]);
else
- *p = SysAllocStringLen(&sContent[offset], count);
-
- SysFreeString(sContent);
- hr = S_OK;
+ *p = SysAllocStringLen(&data[offset], count);
}
+ else
+ hr = S_FALSE;
- xmlFree(pContent);
+ SysFreeString(data);
}
return hr;
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index e21b203..ba959d3 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -540,11 +540,10 @@ static HRESULT WINAPI domtext_substringData(
LONG offset, LONG count, BSTR *p)
{
domtext *This = impl_from_IXMLDOMText( iface );
- xmlChar *pContent;
- LONG nLength = 0;
- HRESULT hr = S_FALSE;
+ HRESULT hr;
+ BSTR data;
- TRACE("%p\n", iface);
+ TRACE("%p %d %d %p\n", This, offset, count, p);
if(!p)
return E_INVALIDARG;
@@ -554,26 +553,24 @@ static HRESULT WINAPI domtext_substringData(
return E_INVALIDARG;
if(count == 0)
- return hr;
+ return S_FALSE;
- pContent = xmlNodeGetContent(This->node.node);
- if(pContent)
+ hr = IXMLDOMText_get_data(iface, &data);
+ if(hr == S_OK)
{
- nLength = xmlStrlen(pContent);
+ LONG len = SysStringLen(data);
- if( offset < nLength)
+ if(offset < len)
{
- BSTR sContent = bstr_from_xmlChar(pContent);
- if(offset + count > nLength)
- *p = SysAllocString(&sContent[offset]);
+ if(offset + count > len)
+ *p = SysAllocString(&data[offset]);
else
- *p = SysAllocStringLen(&sContent[offset], count);
-
- SysFreeString(sContent);
- hr = S_OK;
+ *p = SysAllocStringLen(&data[offset], count);
}
+ else
+ hr = S_FALSE;
- xmlFree(pContent);
+ SysFreeString(data);
}
return hr;
More information about the wine-cvs
mailing list