From 2be36b16216e957173dccfe9ac1ebeaf93b621eb Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Wed, 12 Nov 2014 22:59:25 +0000 Subject: [PATCH] fixes #564 - ebp not restored on mouse down event call --- src/interface/window.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/interface/window.c b/src/interface/window.c index 6766badb59..6200194443 100644 --- a/src/interface/window.c +++ b/src/interface/window.c @@ -1602,6 +1602,7 @@ void window_event_mouse_down_call(rct_window *w, int widgetIndex) #ifdef _MSC_VER __asm { + push ebp push address push widget push w @@ -1611,21 +1612,24 @@ void window_event_mouse_down_call(rct_window *w, int widgetIndex) mov esi, w call[esp + 12] add esp, 16 + pop ebp } #else __asm__("\ - push %[address]\n\ - mov edi, %[widget] \n\ - mov eax, %[w] \n\ - mov edx, %[widgetIndex] \n\ - push edi \n\ - push eax \n\ - push edx \n\ - mov esi, %[w] \n\ - call [esp+12] \n\ - add esp, 16 \n\ - " :[address] "+m" (address), [w] "+m" (w), [widget] "+m" (widget), [widgetIndex] "+m" (widgetIndex): : "eax", "esi", "edx", "edi" - ); + push ebp \n\ + push %[address]\n\ + mov edi, %[widget] \n\ + mov eax, %[w] \n\ + mov edx, %[widgetIndex] \n\ + push edi \n\ + push eax \n\ + push edx \n\ + mov esi, %[w] \n\ + call [esp+12] \n\ + add esp, 16 \n\ + pop ebp \n\ + " :[address] "+m" (address), [w] "+m" (w), [widget] "+m" (widget), [widgetIndex] "+m" (widgetIndex): : "eax", "esi", "edx", "edi" + ); #endif }