From 675ed5a9b464a82b55bd6096c1744f863e38fdfb Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Mon, 10 Mar 2008 15:52:48 +1100 Subject: [PATCH] msxml3: Implement IXMLDOMCDATASection_appendData. --- dlls/msxml3/cdata.c | 28 ++++++++++++++++++++++++++-- dlls/msxml3/tests/domdoc.c | 15 +++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c index 38a429e6db8..4593257f14f 100644 --- a/dlls/msxml3/cdata.c +++ b/dlls/msxml3/cdata.c @@ -584,8 +584,32 @@ static HRESULT WINAPI domcdata_appendData( IXMLDOMCDATASection *iface, BSTR p) { - FIXME("\n"); - return E_NOTIMPL; + domcdata *This = impl_from_IXMLDOMCDATASection( iface ); + xmlnode *pDOMNode = impl_from_IXMLDOMNode( (IXMLDOMNode*)This->element ); + xmlChar *pContent; + HRESULT hr = S_FALSE; + + TRACE("%p\n", iface); + + /* Nothing to do if NULL or an Empty string passed in. */ + if(p == NULL || SysStringLen(p) == 0) + return S_OK; + + pContent = xmlChar_from_wchar( (WCHAR*)p ); + if(pContent) + { + if(xmlTextConcat(pDOMNode->node, pContent, SysStringLen(p) ) == 0) + hr = S_OK; + else + { + hr = E_FAIL; + xmlFree(pContent); + } + } + else + hr = E_FAIL; + + return hr; } static HRESULT WINAPI domcdata_insertData( diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index a503d79803b..3c11be851d5 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -2500,6 +2500,21 @@ static void test_xmlTypes(void) ok( !lstrcmpW( str, _bstr_("\\") ), "incorrect substringData string\n"); SysFreeString(str); + /* test appendData */ + hr = IXMLDOMCDATASection_appendData(pCDataSec, NULL); + ok(hr == S_OK, "ret %08x\n", hr ); + + hr = IXMLDOMCDATASection_appendData(pCDataSec, _bstr_("")); + ok(hr == S_OK, "ret %08x\n", hr ); + + hr = IXMLDOMCDATASection_appendData(pCDataSec, _bstr_("Append")); + ok(hr == S_OK, "ret %08x\n", hr ); + + hr = IXMLDOMCDATASection_get_text(pCDataSec, &str); + ok(hr == S_OK, "ret %08x\n", hr ); + ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\Append") ), "incorrect get_text string\n"); + SysFreeString(str); + IXMLDOMCDATASection_Release(pCDataSec); } -- 2.11.4.GIT