[pkg-wine-party] [SCM] Debian Wine packaging branch, wheezy, updated. wine-1.4-7-302-gb61b690

Alexandre Julliard julliard at winehq.org
Sun Jun 17 20:01:46 UTC 2012


The following commit has been merged in the wheezy branch:
commit 80472dc050b344600edf976f31f28b88f77466b9
Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Mar 15 20:29:23 2012 +0100

    ntdll: Properly follow jumps when checking a function epilog.
    (cherry picked from commit c0610daf77c0f72eed84d4d944aded49ded0c269)

diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index bea7ae0..5470a59 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -2629,8 +2629,6 @@ static BOOL is_inside_epilog( BYTE *pc, ULONG64 base, const RUNTIME_FUNCTION *fu
 
     for (;;)
     {
-        DWORD offset;
-
         if ((*pc & 0xf0) == 0x40) pc++;  /* rex prefix */
 
         switch (*pc)
@@ -2649,11 +2647,15 @@ static BOOL is_inside_epilog( BYTE *pc, ULONG64 base, const RUNTIME_FUNCTION *fu
         case 0xc3: /* ret */
             return TRUE;
         case 0xe9: /* jmp nnnn */
-            offset = pc + 5 + *(LONG *)(pc + 1) - (BYTE *)base;
-            return (offset >= function->BeginAddress && offset < function->EndAddress);
+            pc += 5 + *(LONG *)(pc + 1);
+            if (pc - (BYTE *)base >= function->BeginAddress && pc - (BYTE *)base < function->EndAddress)
+                continue;
+            break;
         case 0xeb: /* jmp n */
-            offset = pc + 2 + (signed char)pc[1] - (BYTE *)base;
-            return (offset >= function->BeginAddress && offset < function->EndAddress);
+            pc += 2 + (signed char)pc[1];
+            if (pc - (BYTE *)base >= function->BeginAddress && pc - (BYTE *)base < function->EndAddress)
+                continue;
+            break;
         case 0xf3: /* rep; ret (for amd64 prediction bug) */
             return pc[1] == 0xc3;
         }

-- 
Debian Wine packaging



More information about the pkg-wine-party mailing list