Module: wine Branch: master Commit: 9021cca65da6eb6b777518410e82ea5f29e8be51 URL: https://source.winehq.org/git/wine.git/?a=commit;h=9021cca65da6eb6b777518410...
Author: John Chadwick john@jchw.io Date: Wed Nov 20 00:40:33 2019 -0800
kernelbase: Fix GetSystemFirmwareTable regression.
Regression caused by 71aba33fc68e97d1b49a9207c8fc2ef733b604a7.
Signed-off-by: John Chadwick john@jchw.io Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/tests/version.c | 1 - dlls/kernelbase/memory.c | 11 ++++------- 2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/dlls/kernel32/tests/version.c b/dlls/kernel32/tests/version.c index db42fc5a29..1bb3e20978 100644 --- a/dlls/kernel32/tests/version.c +++ b/dlls/kernel32/tests/version.c @@ -738,7 +738,6 @@ static void test_GetSystemFirmwareTable(void)
expected_len -= min_sfti_len; len = pGetSystemFirmwareTable(RSMB, 0, NULL, 0); -todo_wine ok(len == expected_len, "Expected length %u, got %u\n", expected_len, len);
smbios_table = HeapAlloc(GetProcessHeap(), 0, expected_len); diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index 6be399bc97..c93d490e74 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -1161,13 +1161,10 @@ UINT WINAPI GetSystemFirmwareTable( DWORD provider, DWORD id, void *buffer, DWOR info->Action = SystemFirmwareTable_Get; info->TableID = id;
- if (set_ntstatus( NtQuerySystemInformation( SystemFirmwareTableInformation, - info, buffer_size, &buffer_size ))) - { - buffer_size -= offsetof( SYSTEM_FIRMWARE_TABLE_INFORMATION, TableBuffer ); - if (buffer_size <= size) memcpy( buffer, info->TableBuffer, buffer_size ); - } - else buffer_size = 0; + set_ntstatus( NtQuerySystemInformation( SystemFirmwareTableInformation, + info, buffer_size, &buffer_size )); + buffer_size -= offsetof( SYSTEM_FIRMWARE_TABLE_INFORMATION, TableBuffer ); + if (buffer_size <= size) memcpy( buffer, info->TableBuffer, buffer_size );
HeapFree( GetProcessHeap(), 0, info ); return buffer_size;