Module: wine
Branch: refs/heads/master
Commit: 82818284c3a227fdbd894e626b887f5bb6b3addc
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=82818284c3a227fdbd894e6…
Author: Peter Beutner <p.beutner(a)gmx.net>
Date: Wed Feb 22 12:21:00 2006 +0100
msvcrt: Save esp before calling catch block and restore afterwards.
It seems like the esp value (which is saved at [ebp-16]) is sometimes
changed inside the catch handler so we end up with a bogus esp
afterwards. To avoid that save it before calling the catch block.
---
dlls/msvcrt/cppexcept.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/dlls/msvcrt/cppexcept.c b/dlls/msvcrt/cppexcept.c
index 3f28166..da7b0fb 100644
--- a/dlls/msvcrt/cppexcept.c
+++ b/dlls/msvcrt/cppexcept.c
@@ -285,6 +285,7 @@ inline static void call_catch_block( PEX
struct catch_func_nested_frame nested_frame;
int trylevel = frame->trylevel;
thread_data_t *thread_data = msvcrt_get_thread_data();
+ DWORD save_esp = ((DWORD*)frame)[-1];
for (i = 0; i < descr->tryblock_count; i++)
{
@@ -339,6 +340,7 @@ inline static void call_catch_block( PEX
thread_data->exc_record = nested_frame.prev_rec;
__wine_pop_frame( &nested_frame.frame );
+ ((DWORD*)frame)[-1] = save_esp;
if (info && info->destructor) call_dtor( info->destructor, object );
TRACE( "done, continuing at %p\n", addr );
Module: wine
Branch: refs/heads/master
Commit: 8d845e3a1a4d8f05b20b5727dd578ea1b1e731e9
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=8d845e3a1a4d8f05b20b572…
Author: Marco Timpano <marcotimpano(a)hotmail.it>
Date: Wed Feb 22 12:03:07 2006 +0100
winedos: Fixed a couple of typos in ppdev.
---
dlls/winedos/ppdev.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/winedos/ppdev.c b/dlls/winedos/ppdev.c
index 3a25de9..527ffe2 100644
--- a/dlls/winedos/ppdev.c
+++ b/dlls/winedos/ppdev.c
@@ -169,7 +169,7 @@ char IO_pp_init(void)
}
/* Check for the minimum required IOCTLS */
if ((ioctl(fd,PPRDATA,&res))||
- (ioctl(fd,PPRCONTROL,&res))||
+ (ioctl(fd,PPRSTATUS,&res))||
(ioctl(fd,PPRCONTROL,&res)))
{
ERR("PPUSER IOCTL not available for parport device %s\n",buffer);
@@ -289,7 +289,7 @@ int IO_pp_inp(int port, DWORD* res)
/* IO_pp_outp
*
- * Check if we can satisfy the INP command with some of the configured PPDEV deviced
+ * Check if we can satisfy the OUTP command with some of the configured PPDEV deviced
* Return NULL on success
*/
BOOL IO_pp_outp(int port, DWORD* res)