[1/2] msxml3: Support disabled escaping mode for characters() callback
Nikolay Sivov
nsivov at codeweavers.com
Thu Apr 26 11:44:04 CDT 2012
Support disabled escaping mode for characters() callback
-------------- next part --------------
>From 2b08a1d26cdaf7f2f0126c9a4b25e347e953d5ef Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Thu, 26 Apr 2012 20:22:27 +0400
Subject: [PATCH 1/2] Support disabled escaping mode for characters() callback
---
dlls/msxml3/mxwriter.c | 2 +-
dlls/msxml3/tests/saxreader.c | 31 ++++++++++++++++++++++++++++---
2 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c
index 779ca7a..c512d5c 100644
--- a/dlls/msxml3/mxwriter.c
+++ b/dlls/msxml3/mxwriter.c
@@ -1109,7 +1109,7 @@ static HRESULT WINAPI SAXContentHandler_characters(
if (nchars)
{
- if (This->cdata)
+ if (This->cdata || This->props[MXWriter_DisableEscaping] == VARIANT_TRUE)
write_output_buffer(This->buffer, chars, nchars);
else
{
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index 340bdd0..04a0648 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -3248,6 +3248,7 @@ static void test_mxwriter_characters(void)
{
ISAXContentHandler *content;
IMXWriter *writer;
+ VARIANT dest;
HRESULT hr;
if (!is_clsid_supported(table->clsid, mxwriter_support_data))
@@ -3276,17 +3277,41 @@ static void test_mxwriter_characters(void)
/* test output */
if (hr == S_OK)
{
- VARIANT dest;
-
V_VT(&dest) = VT_EMPTY;
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
ok(!lstrcmpW(_bstr_(table->output), V_BSTR(&dest)),
- "test %d: got wrong content %s, expected %s\n", i, wine_dbgstr_w(V_BSTR(&dest)), table->output);
+ "test %d: got wrong content %s, expected \"%s\"\n", i, wine_dbgstr_w(V_BSTR(&dest)), table->output);
+ VariantClear(&dest);
+ }
+
+ /* with disabled escaping */
+ V_VT(&dest) = VT_EMPTY;
+ hr = IMXWriter_put_output(writer, dest);
+ EXPECT_HR(hr, S_OK);
+
+ hr = IMXWriter_put_disableOutputEscaping(writer, VARIANT_TRUE);
+ EXPECT_HR(hr, S_OK);
+
+ hr = ISAXContentHandler_characters(content, _bstr_(table->data), strlen(table->data));
+ EXPECT_HR(hr, S_OK);
+
+ /* test output */
+ if (hr == S_OK)
+ {
+ V_VT(&dest) = VT_EMPTY;
+ hr = IMXWriter_get_output(writer, &dest);
+ EXPECT_HR(hr, S_OK);
+ ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
+ ok(!lstrcmpW(_bstr_(table->data), V_BSTR(&dest)),
+ "test %d: got wrong content %s, expected \"%s\"\n", i, wine_dbgstr_w(V_BSTR(&dest)), table->data);
VariantClear(&dest);
}
+ ISAXContentHandler_Release(content);
+ IMXWriter_Release(writer);
+
table++;
i++;
}
--
1.5.6.5
More information about the wine-patches
mailing list