From: Rémi Bernon rbernon@codeweavers.com
--- dlls/kernel32/heap.c | 3 ++- dlls/kernel32/tests/heap.c | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c index 5f7f950d23d..d433a703d16 100644 --- a/dlls/kernel32/heap.c +++ b/dlls/kernel32/heap.c @@ -385,7 +385,8 @@ SIZE_T WINAPI LocalSize( HLOCAL handle ) TRACE_(globalmem)( "handle %p\n", handle );
RtlLockHeap( heap ); - if ((ptr = unsafe_ptr_from_HLOCAL( handle ))) + if ((ptr = unsafe_ptr_from_HLOCAL( handle )) && + HeapValidate( heap, HEAP_NO_SERIALIZE, ptr )) ret = HeapSize( heap, HEAP_NO_SERIALIZE, ptr ); else if ((mem = unsafe_mem_from_HLOCAL( handle ))) { diff --git a/dlls/kernel32/tests/heap.c b/dlls/kernel32/tests/heap.c index 46256493913..3e861f52248 100644 --- a/dlls/kernel32/tests/heap.c +++ b/dlls/kernel32/tests/heap.c @@ -1623,7 +1623,6 @@ static void test_GlobalAlloc(void) SetLastError( 0xdeadbeef ); size = GlobalSize( invalid_ptr ); ok( size == 0, "GlobalSize succeeded\n" ); - todo_wine ok( GetLastError() == ERROR_INVALID_HANDLE, "got error %lu\n", GetLastError() ); SetLastError( 0xdeadbeef ); ptr = GlobalLock( invalid_ptr ); @@ -2014,7 +2013,6 @@ static void test_LocalAlloc(void) SetLastError( 0xdeadbeef ); size = LocalSize( invalid_ptr ); ok( size == 0, "LocalSize succeeded\n" ); - todo_wine ok( GetLastError() == ERROR_INVALID_HANDLE, "got error %lu\n", GetLastError() ); SetLastError( 0xdeadbeef ); ptr = LocalLock( invalid_ptr );