Module: wine Branch: master Commit: ec036bc60577419c40860d3dfc2deade4fdadc08 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ec036bc60577419c40860d3df...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Mar 2 15:05:58 2022 +0100
user32: Use CreateAcceleratorTableW in LoadAcceleratorsW.
Instead of accessing accelerators object directly.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/resource.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/dlls/user32/resource.c b/dlls/user32/resource.c index 912b7f95227..ce64833e413 100644 --- a/dlls/user32/resource.c +++ b/dlls/user32/resource.c @@ -54,8 +54,8 @@ struct accelerator */ HACCEL WINAPI LoadAcceleratorsW(HINSTANCE instance, LPCWSTR name) { - struct accelerator *accel; const PE_ACCEL *pe_table; + ACCEL *table; unsigned int i; HRSRC rsrc; HACCEL handle; @@ -65,17 +65,16 @@ HACCEL WINAPI LoadAcceleratorsW(HINSTANCE instance, LPCWSTR name) pe_table = LoadResource( instance, rsrc ); count = SizeofResource( instance, rsrc ) / sizeof(*pe_table); if (!count) return 0; - accel = HeapAlloc( GetProcessHeap(), 0, FIELD_OFFSET( struct accelerator, table[count] )); - if (!accel) return 0; - accel->count = count; + table = HeapAlloc( GetProcessHeap(), 0, count * sizeof(*table) ); + if (!table) return 0; for (i = 0; i < count; i++) { - accel->table[i].fVirt = pe_table[i].fVirt; - accel->table[i].key = pe_table[i].key; - accel->table[i].cmd = pe_table[i].cmd; + table[i].fVirt = pe_table[i].fVirt; + table[i].key = pe_table[i].key; + table[i].cmd = pe_table[i].cmd; } - if (!(handle = alloc_user_handle( &accel->obj, NTUSER_OBJ_ACCEL ))) - HeapFree( GetProcessHeap(), 0, accel ); + handle = CreateAcceleratorTableW( table, count ); + HeapFree( GetProcessHeap(), 0, table ); TRACE_(accel)("%p %s returning %p\n", instance, debugstr_w(name), handle ); return handle; }