Rémi Bernon : kernel32/tests: Add some HGLOBAL/HLOCAL limits tests.
Alexandre Julliard
julliard at winehq.org
Mon Mar 28 15:53:42 CDT 2022
Module: wine
Branch: master
Commit: d32bc81ea4d745c9725239329543a2810a8354f1
URL: https://source.winehq.org/git/wine.git/?a=commit;h=d32bc81ea4d745c9725239329543a2810a8354f1
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Mon Mar 28 11:35:57 2022 +0200
kernel32/tests: Add some HGLOBAL/HLOCAL limits tests.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/tests/heap.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/dlls/kernel32/tests/heap.c b/dlls/kernel32/tests/heap.c
index b2dc111708b..76a60a897b3 100644
--- a/dlls/kernel32/tests/heap.c
+++ b/dlls/kernel32/tests/heap.c
@@ -257,6 +257,7 @@ static void test_GlobalAlloc(void)
static const SIZE_T buffer_size = ARRAY_SIZE(zero_buffer);
const HGLOBAL invalid_mem = LongToHandle( 0xdeadbee0 + sizeof(void *) );
void *const invalid_ptr = LongToHandle( 0xdeadbee0 );
+ HGLOBAL globals[0x10000];
HGLOBAL mem, tmp_mem;
BYTE *ptr, *tmp_ptr;
UINT i, flags;
@@ -268,6 +269,37 @@ static void test_GlobalAlloc(void)
mem = GlobalReAlloc( 0, 10, GMEM_MOVEABLE );
ok( !mem, "GlobalReAlloc succeeded\n" );
+ for (i = 0; i < ARRAY_SIZE(globals); ++i)
+ {
+ mem = GlobalAlloc( GMEM_MOVEABLE | GMEM_DISCARDABLE, 0 );
+ ok( !!mem, "GlobalAlloc failed, error %lu\n", GetLastError() );
+ globals[i] = mem;
+ }
+
+ SetLastError( 0xdeadbeef );
+ mem = GlobalAlloc( GMEM_MOVEABLE | GMEM_DISCARDABLE, 0 );
+ todo_wine
+ ok( !mem, "GlobalAlloc succeeded\n" );
+ todo_wine
+ ok( GetLastError() == ERROR_NOT_ENOUGH_MEMORY, "got error %lu\n", GetLastError() );
+ SetLastError( 0xdeadbeef );
+ mem = LocalAlloc( LMEM_MOVEABLE | LMEM_DISCARDABLE, 0 );
+ todo_wine
+ ok( !mem, "LocalAlloc succeeded\n" );
+ todo_wine
+ ok( GetLastError() == ERROR_NOT_ENOUGH_MEMORY, "got error %lu\n", GetLastError() );
+
+ mem = GlobalAlloc( GMEM_DISCARDABLE, 0 );
+ ok( !!mem, "GlobalAlloc failed, error %lu\n", GetLastError() );
+ mem = GlobalFree( mem );
+ ok( !mem, "GlobalFree failed, error %lu\n", GetLastError() );
+
+ for (i = 0; i < ARRAY_SIZE(globals); ++i)
+ {
+ mem = GlobalFree( globals[i] );
+ ok( !mem, "GlobalFree failed, error %lu\n", GetLastError() );
+ }
+
mem = GlobalAlloc( GMEM_MOVEABLE, 0 );
ok( !!mem, "GlobalAlloc failed, error %lu\n", GetLastError() );
mem = GlobalReAlloc( mem, 10, GMEM_MOVEABLE );
@@ -593,6 +625,7 @@ static void test_LocalAlloc(void)
static const SIZE_T buffer_size = ARRAY_SIZE(zero_buffer);
const HLOCAL invalid_mem = LongToHandle( 0xdeadbee0 + sizeof(void *) );
void *const invalid_ptr = LongToHandle( 0xdeadbee0 );
+ HLOCAL locals[0x10000];
HLOCAL mem, tmp_mem;
BYTE *ptr, *tmp_ptr;
UINT i, flags;
@@ -604,6 +637,37 @@ static void test_LocalAlloc(void)
mem = LocalReAlloc( 0, 10, LMEM_MOVEABLE );
ok( !mem, "LocalReAlloc succeeded\n" );
+ for (i = 0; i < ARRAY_SIZE(locals); ++i)
+ {
+ mem = LocalAlloc( LMEM_MOVEABLE | LMEM_DISCARDABLE, 0 );
+ ok( !!mem, "LocalAlloc failed, error %lu\n", GetLastError() );
+ locals[i] = mem;
+ }
+
+ SetLastError( 0xdeadbeef );
+ mem = LocalAlloc( LMEM_MOVEABLE | LMEM_DISCARDABLE, 0 );
+ todo_wine
+ ok( !mem, "LocalAlloc succeeded\n" );
+ todo_wine
+ ok( GetLastError() == ERROR_NOT_ENOUGH_MEMORY, "got error %lu\n", GetLastError() );
+ SetLastError( 0xdeadbeef );
+ mem = GlobalAlloc( GMEM_MOVEABLE | GMEM_DISCARDABLE, 0 );
+ todo_wine
+ ok( !mem, "GlobalAlloc succeeded\n" );
+ todo_wine
+ ok( GetLastError() == ERROR_NOT_ENOUGH_MEMORY, "got error %lu\n", GetLastError() );
+
+ mem = LocalAlloc( LMEM_DISCARDABLE, 0 );
+ ok( !!mem, "LocalAlloc failed, error %lu\n", GetLastError() );
+ mem = LocalFree( mem );
+ ok( !mem, "LocalFree failed, error %lu\n", GetLastError() );
+
+ for (i = 0; i < ARRAY_SIZE(locals); ++i)
+ {
+ mem = LocalFree( locals[i] );
+ ok( !mem, "LocalFree failed, error %lu\n", GetLastError() );
+ }
+
mem = LocalAlloc( LMEM_MOVEABLE, 0 );
ok( !!mem, "LocalAlloc failed, error %lu\n", GetLastError() );
mem = LocalReAlloc( mem, 10, LMEM_MOVEABLE );
More information about the wine-cvs
mailing list