Nikolay Sivov : ntdll: Keep unwind table entry count instead of a size.

Alexandre Julliard julliard at winehq.org
Wed Jan 23 17:11:33 CST 2019


Module: wine
Branch: master
Commit: 0cd5a68ca47c9f2b459fa6cb46c874b582c1db2b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0cd5a68ca47c9f2b459fa6cb46c874b582c1db2b

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Jan 23 08:23:49 2019 +0300

ntdll: Keep unwind table entry count instead of a size.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/signal_x86_64.c | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index 807e81e..dd82000 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -342,7 +342,7 @@ struct dynamic_unwind_entry
 
     /* lookup table */
     RUNTIME_FUNCTION *table;
-    DWORD table_size;
+    DWORD count;
 
     /* user defined callback */
     PGET_RUNTIME_FUNCTION_CALLBACK callback;
@@ -2516,7 +2516,7 @@ static RUNTIME_FUNCTION *find_function_info( ULONG64 pc, HMODULE module,
                                              RUNTIME_FUNCTION *func, ULONG size )
 {
     int min = 0;
-    int max = size/sizeof(*func) - 1;
+    int max = size - 1;
 
     while (min <= max)
     {
@@ -2551,7 +2551,7 @@ static RUNTIME_FUNCTION *lookup_function_info( ULONG64 pc, ULONG64 *base, LDR_MO
                                                   IMAGE_DIRECTORY_ENTRY_EXCEPTION, &size )))
         {
             /* lookup in function table */
-            func = find_function_info( pc, (*module)->BaseAddress, func, size );
+            func = find_function_info( pc, (*module)->BaseAddress, func, size/sizeof(*func) );
         }
     }
     else
@@ -2569,7 +2569,7 @@ static RUNTIME_FUNCTION *lookup_function_info( ULONG64 pc, ULONG64 *base, LDR_MO
                 if (entry->callback)
                     func = entry->callback( pc, entry->context );
                 else
-                    func = find_function_info( pc, (HMODULE)entry->base, entry->table, entry->table_size );
+                    func = find_function_info( pc, (HMODULE)entry->base, entry->table, entry->count );
                 break;
             }
         }
@@ -3456,12 +3456,12 @@ BOOLEAN CDECL RtlAddFunctionTable( RUNTIME_FUNCTION *table, DWORD count, DWORD64
     if (!entry)
         return FALSE;
 
-    entry->base       = addr;
-    entry->end        = addr + table[count - 1].EndAddress;
-    entry->table      = table;
-    entry->table_size = count * sizeof(RUNTIME_FUNCTION);
-    entry->callback   = NULL;
-    entry->context    = NULL;
+    entry->base      = addr;
+    entry->end       = addr + table[count - 1].EndAddress;
+    entry->table     = table;
+    entry->count     = count;
+    entry->callback  = NULL;
+    entry->context   = NULL;
 
     RtlEnterCriticalSection( &dynamic_unwind_section );
     list_add_tail( &dynamic_unwind_list, &entry->entry );
@@ -3491,12 +3491,12 @@ BOOLEAN CDECL RtlInstallFunctionTableCallback( DWORD64 table, DWORD64 base, DWOR
     if (!entry)
         return FALSE;
 
-    entry->base       = base;
-    entry->end        = base + length;
-    entry->table      = (RUNTIME_FUNCTION *)table;
-    entry->table_size = 0;
-    entry->callback   = callback;
-    entry->context    = context;
+    entry->base      = base;
+    entry->end       = base + length;
+    entry->table     = (RUNTIME_FUNCTION *)table;
+    entry->count     = 0;
+    entry->callback  = callback;
+    entry->context   = context;
 
     RtlEnterCriticalSection( &dynamic_unwind_section );
     list_add_tail( &dynamic_unwind_list, &entry->entry );




More information about the wine-cvs mailing list