A second one which Marcus ended up reinventing, but at least the underlying problem is solved now. :-/
Gerald
On Wed, 26 Dec 2007, Gerald Pfeifer wrote:
Okay. In that case, to account for possible future enhancements of ImmGetCompositionStringW(), we'll need a patch like the following. The current error handling code in EDIT_GetCompositionStr() simply doesn't work due to the unsignedness of dwBufLen.
Gerald
ChangeLog: Fix error handling in EDIT_GetCompositionStr().
Index: dlls/user32/edit.c
RCS file: /home/wine/wine/dlls/user32/edit.c,v retrieving revision 1.16 diff -u -3 -p -r1.16 edit.c --- dlls/user32/edit.c 20 Nov 2007 16:56:17 -0000 1.16 +++ dlls/user32/edit.c 26 Dec 2007 21:29:33 -0000 @@ -5360,6 +5348,7 @@ static void EDIT_UpdateText(EDITSTATE *e
static void EDIT_GetCompositionStr(HWND hwnd, LPARAM CompFlag, EDITSTATE *es) {
- LONG l; DWORD dwBufLen; LPWSTR lpCompStr = NULL; HIMC hIMC;
@@ -5369,9 +5358,9 @@ static void EDIT_GetCompositionStr(HWND if (!(hIMC = ImmGetContext(hwnd))) return;
- dwBufLen = ImmGetCompositionStringW(hIMC, GCS_COMPSTR, NULL, 0);
- dwBufLen = l = ImmGetCompositionStringW(hIMC, GCS_COMPSTR, NULL, 0);
- if (dwBufLen < 0)
- if (l < 0) { ImmReleaseContext(hwnd, hIMC); return;