https://bugs.winehq.org/show_bug.cgi?id=55703
Zeb Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |julliard@winehq.org
--- Comment #4 from Zeb Figura z.figura12@gmail.com --- The application is buggy. It truncates and then sign-extends a stack pointer:
72a160: 55 push %rbp 72a161: 53 push %rbx 72a162: 48 83 ec 38 sub $0x38,%rsp 72a166: 48 8b ec mov %rsp,%rbp 72a169: 48 89 cb mov %rcx,%rbx 72a16c: 48 89 d9 mov %rbx,%rcx 72a16f: e8 1c 3f e4 ff call 56e090 72a174: 48 89 c1 mov %rax,%rcx 72a177: c7 c2 b2 00 00 00 mov $0x000000b2,%edx 72a17d: 4d 33 c0 xor %r8,%r8 72a180: 4c 8d 4d 20 lea 0x20(%rbp),%r9 72a184: 4d 63 c9 movslq %r9,%r9 72a187: e8 34 2d cf ff call 41cec0 /* SendMessageW */ 72a18c: 48 89 d9 mov %rbx,%rcx
In C:
SendMessageW(hwnd, EM_GETRECT, 0, (int)(intptr_t)&rect);
This can only work if the stack is allocated in the low 4G.
I did check and this really does crash on Windows; it doesn't swallow an exception or anything.