From 453f7315cd3b5a205199ad8a2d8848cf82815449 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard <julliard@winehq.org> Date: Mon, 15 Nov 1999 00:46:30 +0000 Subject: [PATCH] Fixed allocation rounding for MEM_RESERVE. --- memory/virtual.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/memory/virtual.c b/memory/virtual.c index f9f917a5afe..b70bf4f52c9 100644 --- a/memory/virtual.c +++ b/memory/virtual.c @@ -552,12 +552,13 @@ LPVOID WINAPI VirtualAlloc( if (addr) { if (type & MEM_RESERVE) /* Round down to 64k boundary */ - base = ((UINT)addr + granularity_mask) & ~granularity_mask; + base = (UINT)addr & ~granularity_mask; else base = ROUND_ADDR( addr ); size = (((UINT)addr + size + page_mask) & ~page_mask) - base; - if (base + size < base) /* Disallow wrap-around */ + if ((base <= granularity_mask) || (base + size < base)) { + /* disallow low 64k and wrap-around */ SetLastError( ERROR_INVALID_PARAMETER ); return NULL; } @@ -636,7 +637,7 @@ LPVOID WINAPI VirtualAlloc( if (!(view = VIRTUAL_FindView( base )) || (base + size > view->base + view->size)) { - SetLastError( ERROR_INVALID_PARAMETER ); + SetLastError( ERROR_INVALID_ADDRESS ); return NULL; } -- GitLab