[PATCH 5/7] kernel32/tests: Add some heap block layout tests.
Rémi Bernon
rbernon at codeweavers.com
Tue Apr 19 12:43:52 CDT 2022
On 4/19/22 19:33, Rémi Bernon wrote:
> Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
> ---
> dlls/kernel32/tests/heap.c | 126 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 126 insertions(+)
>
> diff --git a/dlls/kernel32/tests/heap.c b/dlls/kernel32/tests/heap.c
> index 104eced3bf4..7195907ff03 100644
> --- a/dlls/kernel32/tests/heap.c
> +++ b/dlls/kernel32/tests/heap.c
> @@ -37,6 +37,9 @@
> #define HEAP_VALIDATE_ALL 0x20000000
> #define HEAP_VALIDATE_PARAMS 0x40000000
>
> +#define BLOCK_ALIGN (2 * sizeof(void *) - 1)
> +#define ALIGN_BLOCK_SIZE(x) (((x) + BLOCK_ALIGN) & ~BLOCK_ALIGN)
> +
> /* use function pointers to avoid warnings for invalid parameter tests */
> static LPVOID (WINAPI *pHeapAlloc)(HANDLE,DWORD,SIZE_T);
> static LPVOID (WINAPI *pHeapReAlloc)(HANDLE,DWORD,LPVOID,SIZE_T);
> @@ -1729,6 +1732,128 @@ static void test_LocalAlloc(void)
> }
> }
>
> +static void test_block_layout( HANDLE heap, DWORD global_flags, DWORD heap_flags )
> +{
> + DWORD padd_flags = HEAP_VALIDATE | HEAP_VALIDATE_ALL | HEAP_VALIDATE_PARAMS;
> + SIZE_T expect_size, alloc_size, tail_size, extra_size;
> + unsigned char *ptr0, *ptr1, *ptr2;
> + char tail_buf[64], padd_buf[64];
> + BOOL ret;
> +
> + if (global_flags & (FLG_HEAP_DISABLE_COALESCING|FLG_HEAP_PAGE_ALLOCS|FLG_POOL_ENABLE_TAGGING|
> + FLG_HEAP_ENABLE_TAGGING|FLG_HEAP_ENABLE_TAG_BY_DLL))
> + {
> + skip( "skipping not yet implemented block layout tests\n" );
> + return;
> + }
> +
> + if (!global_flags) extra_size = 8;
> + else extra_size = 2 * sizeof(void *);
> + if (heap_flags & HEAP_TAIL_CHECKING_ENABLED) extra_size += 2 * sizeof(void *);
> + if (heap_flags & padd_flags) extra_size += 2 * sizeof(void *);
> +
> + if (!(heap_flags & HEAP_TAIL_CHECKING_ENABLED)) tail_size = 0;
> + else tail_size = 2 * sizeof(void *);
> +
> + memset(padd_buf, 0, sizeof(padd_buf));
> + memset(tail_buf, 0xab, sizeof(tail_buf));
> +
Hmm, padd_buf is only really used in PATCH 7. Doesn't seem to cause any
warning but I can re-split and resend 5-7 later if it's better.
--
Rémi Bernon <rbernon at codeweavers.com>
More information about the wine-devel
mailing list