Jactry Zeng : riched20: Set pStream->written in ME_StreamOutFlush.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Nov 6 09:06:33 CST 2015
Module: wine
Branch: master
Commit: dc6b2853f512e3193aebcf0606c67043954255eb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dc6b2853f512e3193aebcf0606c67043954255eb
Author: Jactry Zeng <jzeng at codeweavers.com>
Date: Fri Nov 6 14:18:10 2015 +0800
riched20: Set pStream->written in ME_StreamOutFlush.
Superseded patch 115907.
ChangeLog:
- Add tests.
Signed-off-by: Jactry Zeng <jzeng at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/riched20/tests/editor.c | 34 ++++++++++++++++++++++++----------
dlls/riched20/writer.c | 2 ++
2 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c
index 4705dd6..da9671b 100644
--- a/dlls/riched20/tests/editor.c
+++ b/dlls/riched20/tests/editor.c
@@ -3307,6 +3307,8 @@ static void test_ES_PASSWORD(void)
DestroyWindow(hwndRichEdit);
}
+LONG streamout_written = 0;
+
static DWORD CALLBACK test_WM_SETTEXT_esCallback(DWORD_PTR dwCookie,
LPBYTE pbBuff,
LONG cb,
@@ -3318,6 +3320,7 @@ static DWORD CALLBACK test_WM_SETTEXT_esCallback(DWORD_PTR dwCookie,
memcpy(*str, pbBuff, *pcb);
*str += *pcb;
}
+ streamout_written = *pcb;
return 0;
}
@@ -3442,6 +3445,7 @@ static void test_EM_STREAMOUT(void)
EDITSTREAM es;
char buf[1024] = {0};
char * p;
+ LRESULT result;
const char * TestItem1 = "TestSomeText";
const char * TestItem2 = "TestSomeText\r";
@@ -3453,24 +3457,28 @@ static void test_EM_STREAMOUT(void)
es.dwError = 0;
es.pfnCallback = test_WM_SETTEXT_esCallback;
memset(buf, 0, sizeof(buf));
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
r = strlen(buf);
ok(r == 12, "streamed text length is %d, expecting 12\n", r);
ok(strcmp(buf, TestItem1) == 0,
"streamed text different, got %s\n", buf);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
/* RTF mode writes the final end of para \r if it's part of the selection */
p = buf;
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es);
ok (count_pars(buf) == 1, "got %s\n", buf);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
p = buf;
SendMessageA(hwndRichEdit, EM_SETSEL, 0, 12);
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
ok (count_pars(buf) == 0, "got %s\n", buf);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
p = buf;
SendMessageA(hwndRichEdit, EM_SETSEL, 0, -1);
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
ok (count_pars(buf) == 1, "got %s\n", buf);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)TestItem2);
p = buf;
@@ -3478,7 +3486,8 @@ static void test_EM_STREAMOUT(void)
es.dwError = 0;
es.pfnCallback = test_WM_SETTEXT_esCallback;
memset(buf, 0, sizeof(buf));
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
r = strlen(buf);
/* Here again, \r gets converted to \r\n, like WM_GETTEXT */
ok(r == 14, "streamed text length is %d, expecting 14\n", r);
@@ -3487,16 +3496,19 @@ static void test_EM_STREAMOUT(void)
/* And again RTF mode writes the final end of para \r if it's part of the selection */
p = buf;
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es);
ok (count_pars(buf) == 2, "got %s\n", buf);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
p = buf;
SendMessageA(hwndRichEdit, EM_SETSEL, 0, 13);
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
ok (count_pars(buf) == 1, "got %s\n", buf);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
p = buf;
SendMessageA(hwndRichEdit, EM_SETSEL, 0, -1);
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es);
ok (count_pars(buf) == 2, "got %s\n", buf);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)TestItem3);
p = buf;
@@ -3504,7 +3516,8 @@ static void test_EM_STREAMOUT(void)
es.dwError = 0;
es.pfnCallback = test_WM_SETTEXT_esCallback;
memset(buf, 0, sizeof(buf));
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
+ ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written);
r = strlen(buf);
ok(r == 14, "streamed text length is %d, expecting 14\n", r);
ok(strcmp(buf, TestItem3) == 0,
@@ -3516,11 +3529,12 @@ static void test_EM_STREAMOUT(void)
es.dwError = 0;
es.pfnCallback = test_esCallback_written_1;
memset(buf, 0, sizeof(buf));
- SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
+ result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es);
r = strlen(buf);
ok(r == 14, "streamed text length is %d, expecting 14\n", r);
ok(strcmp(buf, TestItem3) == 0,
"streamed text different, got %s\n", buf);
+ ok(result == 0, "got %ld expected 0\n", result);
DestroyWindow(hwndRichEdit);
diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c
index 2c7386a..76cf5d7 100644
--- a/dlls/riched20/writer.c
+++ b/dlls/riched20/writer.c
@@ -62,6 +62,8 @@ ME_StreamOutFlush(ME_OutStream *pStream)
return FALSE;
/* Don't resend partial chunks if nWritten < pStream->pos */
}
+ if (nWritten == pStream->pos)
+ pStream->written += nWritten;
pStream->pos = 0;
return TRUE;
}
More information about the wine-cvs
mailing list