I assume there's something wrong with my patch ?
I've did some research lately on how 32 Bit programs interact with 16Bit windows. This patch doesn't help if a SendMessage was sent from a 32Bit application because it gets dispatched from the 16Bit thread. So NtCurrentTeb doesn't work. At least it fixes uncaught WM_USER messages in the current process.
user - EditWndProc_common - Ignore WM_USER messages which are not sent from a vdm
Hello,
this patch fixes a Notes Client crash when building the server console tab (administration client). After creating a text control for console commands it sends uncaught WM_USER messages which get interpreted by Wine as 16Bit messages and crashes badly due to NULL pointers.
Changelog: user/edit.c - EditWndProc_common - Ignore WM_USER messages which are not sent from a vdm
--- Stefan Siebert
diff --git a/dlls/user/edit.c b/dlls/user/edit.c old mode 100644 new mode 100755 index c4f95e4..fd74183 --- a/dlls/user/edit.c +++ b/dlls/user/edit.c @@ -439,6 +439,10 @@ static LRESULT WINAPI EditWndProc_common LRESULT result = 0;
TRACE("hwnd=%p msg=%x (%s) wparam=%x lparam=%lx\n", hwnd, msg, SPY_GetMsgName(msg, hwnd), wParam, lParam); + + /* Ignore WM_USER messages which are not sent from a vdm */ + if ((msg >= WM_USER) && (!NtCurrentTeb()->Tib.SubSystemTib)) + return 0; if (!es && msg != WM_NCCREATE) return DefWindowProcT(hwnd, msg, wParam, lParam, unicode);