mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 12:19:49 +00:00
msxml3: Disable text data escaping for format nodes set with put_data().
This commit is contained in:
parent
f9ab8dab51
commit
47d2f3caf5
2 changed files with 44 additions and 5 deletions
|
@ -12185,6 +12185,9 @@ static void test_put_data(void)
|
|||
WCHAR buff[100], *data;
|
||||
IXMLDOMDocument *doc;
|
||||
DOMNodeType *type;
|
||||
IXMLDOMText *text;
|
||||
IXMLDOMNode *node;
|
||||
VARIANT v;
|
||||
BSTR get_data;
|
||||
HRESULT hr;
|
||||
|
||||
|
@ -12199,9 +12202,6 @@ static void test_put_data(void)
|
|||
type = put_data_types;
|
||||
while (*type != NODE_INVALID)
|
||||
{
|
||||
IXMLDOMNode *node;
|
||||
VARIANT v;
|
||||
|
||||
V_VT(&v) = VT_I2;
|
||||
V_I2(&v) = *type;
|
||||
|
||||
|
@ -12213,8 +12213,6 @@ static void test_put_data(void)
|
|||
{
|
||||
case NODE_TEXT:
|
||||
{
|
||||
IXMLDOMText *text;
|
||||
|
||||
hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text);
|
||||
EXPECT_HR(hr, S_OK);
|
||||
hr = IXMLDOMText_put_data(text, data);
|
||||
|
@ -12284,6 +12282,32 @@ static void test_put_data(void)
|
|||
type++;
|
||||
}
|
||||
|
||||
/* \r\n sequence is never escaped */
|
||||
V_VT(&v) = VT_I2;
|
||||
V_I2(&v) = NODE_TEXT;
|
||||
|
||||
hr = IXMLDOMDocument_createNode(doc, v, _bstr_("name"), NULL, &node);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
|
||||
IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMText, (void**)&text);
|
||||
|
||||
hr = IXMLDOMText_put_data(text, _bstr_("\r\n"));
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
|
||||
hr = IXMLDOMText_get_data(text, &get_data);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
todo_wine
|
||||
ok(!lstrcmpW(get_data, _bstr_("\n")), "got %s\n", wine_dbgstr_w(get_data));
|
||||
SysFreeString(get_data);
|
||||
|
||||
hr = IXMLDOMText_get_xml(text, &get_data);
|
||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||
ok(!lstrcmpW(get_data, _bstr_("\r\n")), "got %s\n", wine_dbgstr_w(get_data));
|
||||
SysFreeString(get_data);
|
||||
|
||||
IXMLDOMText_Release(text);
|
||||
IXMLDOMNode_Release(node);
|
||||
|
||||
IXMLDOMDocument_Release(doc);
|
||||
free_bstrs();
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <stdarg.h>
|
||||
#ifdef HAVE_LIBXML2
|
||||
# include <libxml/parser.h>
|
||||
# include <libxml/parserInternals.h>
|
||||
# include <libxml/xmlerror.h>
|
||||
#endif
|
||||
|
||||
|
@ -55,6 +56,11 @@ static inline domtext *impl_from_IXMLDOMText( IXMLDOMText *iface )
|
|||
return CONTAINING_RECORD(iface, domtext, IXMLDOMText_iface);
|
||||
}
|
||||
|
||||
static void domtext_reset_noenc(domtext *This)
|
||||
{
|
||||
This->node.node->name = NULL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI domtext_QueryInterface(
|
||||
IXMLDOMText *iface,
|
||||
REFIID riid,
|
||||
|
@ -182,6 +188,7 @@ static HRESULT WINAPI domtext_put_nodeValue(
|
|||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_variant(&value));
|
||||
|
||||
domtext_reset_noenc(This);
|
||||
return node_put_value(&This->node, &value);
|
||||
}
|
||||
|
||||
|
@ -371,6 +378,7 @@ static HRESULT WINAPI domtext_put_text(
|
|||
{
|
||||
domtext *This = impl_from_IXMLDOMText( iface );
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(p));
|
||||
domtext_reset_noenc(This);
|
||||
return node_put_text( &This->node, p );
|
||||
}
|
||||
|
||||
|
@ -608,7 +616,14 @@ static HRESULT WINAPI domtext_put_data(
|
|||
BSTR data)
|
||||
{
|
||||
domtext *This = impl_from_IXMLDOMText( iface );
|
||||
static WCHAR rnW[] = {'\r','\n',0};
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(data));
|
||||
|
||||
if (data && !strcmpW(rnW, data))
|
||||
This->node.node->name = xmlStringTextNoenc;
|
||||
else
|
||||
domtext_reset_noenc(This);
|
||||
return node_set_content(&This->node, data);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue