From: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> --- dlls/msxml3/mxwriter.c | 16 ++++++++-------- dlls/msxml4/tests/saxreader.c | 1 - dlls/msxml6/tests/saxreader.c | 2 -- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c index f766aa85955..0024d375934 100644 --- a/dlls/msxml3/mxwriter.c +++ b/dlls/msxml3/mxwriter.c @@ -489,9 +489,9 @@ static void close_output_buffer(mxwriter *writer) */ -static void write_crlf(mxwriter *writer) +static void write_crlf(mxwriter *writer, escape_mode mode) { - bool use_charref_lf = writer->class_version == MSXML6; + bool use_charref_lf = writer->class_version >= MSXML4 && mode == EscapeValue; if (use_charref_lf) write_output_buffer(writer, L" ", 5); @@ -514,19 +514,19 @@ static void write_escaped_string(mxwriter *writer, const WCHAR *str, int len, es else if (*p == '"' && mode == EscapeValue) write_output_buffer(writer, L""", 6); else if (*p == '\n') - write_crlf(writer); + write_crlf(writer, mode); else if (*p == '\r') { if (len > 0 && p[1] == '\n') { - write_crlf(writer); + write_crlf(writer, mode); ++p; --len; } else { - write_crlf(writer); + write_crlf(writer, mode); } } else @@ -543,19 +543,19 @@ static void write_string_with_crlf(mxwriter *writer, const WCHAR *str, int len) while (len-- > 0) { if (*p == '\n') - write_crlf(writer); + write_crlf(writer, EscapeText); else if (*p == '\r') { if (len > 0 && p[1] == '\n') { - write_crlf(writer); + write_crlf(writer, EscapeText); ++p; --len; } else { - write_crlf(writer); + write_crlf(writer, EscapeText); } } else diff --git a/dlls/msxml4/tests/saxreader.c b/dlls/msxml4/tests/saxreader.c index 0d9a199f029..76cda76b99e 100644 --- a/dlls/msxml4/tests/saxreader.c +++ b/dlls/msxml4/tests/saxreader.c @@ -3783,7 +3783,6 @@ static void test_mxwriter_startendelement_batch(const struct writer_startendelem hr = IMXWriter_get_output(writer, &dest); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - todo_wine_if(i == 16 || i == 17 || i == 19) ok(!lstrcmpW(table->output, V_BSTR(&dest)), "test %d: got wrong content %s, expected %s\n", i, wine_dbgstr_w(V_BSTR(&dest)), wine_dbgstr_w(table->output)); VariantClear(&dest); diff --git a/dlls/msxml6/tests/saxreader.c b/dlls/msxml6/tests/saxreader.c index 1522589e622..dd99d936f57 100644 --- a/dlls/msxml6/tests/saxreader.c +++ b/dlls/msxml6/tests/saxreader.c @@ -2222,7 +2222,6 @@ static void test_mxwriter_characters(void) hr = IMXWriter_get_output(writer, &dest); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "Unexpected type %d.\n", V_VT(&dest)); - todo_wine ok(!lstrcmpW(L"ab\r\n\r\ncd", V_BSTR(&dest)), "Unexpected content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); @@ -2237,7 +2236,6 @@ static void test_mxwriter_characters(void) hr = IMXWriter_get_output(writer, &dest); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(V_VT(&dest) == VT_BSTR, "Unexpected type %d.\n", V_VT(&dest)); - todo_wine ok(!lstrcmpW(L"\r\nab\r\nc\r\n", V_BSTR(&dest)), "Unexpected content %s\n", wine_dbgstr_w(V_BSTR(&dest))); VariantClear(&dest); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10172