From: Eli Zaretskii Date: Sat, 20 Feb 2016 16:59:14 +0000 (+0200) Subject: Fix memory reservation on MS-Windows X-Git-Tag: emacs-25.0.92~82 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ea0b604412d6b33353839640f7d5e5e0b62a45ad;p=emacs.git Fix memory reservation on MS-Windows * src/w32heap.c (mmap_alloc): Reserve memory in 64KB granular units. This avoids leaving gaps in reserved memory regions that no one can use, since memory reservation must produce 64KB-aligned addresses. (Bug#22526) --- diff --git a/src/w32heap.c b/src/w32heap.c index 69706a3a57d..b908169b96c 100644 --- a/src/w32heap.c +++ b/src/w32heap.c @@ -641,12 +641,14 @@ mmap_alloc (void **var, size_t nbytes) advance, and the buffer is enlarged several times as the data is decompressed on the fly. */ if (nbytes < MAX_BUFFER_SIZE) - p = VirtualAlloc (NULL, (nbytes * 2), MEM_RESERVE, PAGE_READWRITE); + p = VirtualAlloc (NULL, ROUND_UP (nbytes * 2, get_allocation_unit ()), + MEM_RESERVE, PAGE_READWRITE); /* If it fails, or if the request is above 512MB, try with the requested size. */ if (p == NULL) - p = VirtualAlloc (NULL, nbytes, MEM_RESERVE, PAGE_READWRITE); + p = VirtualAlloc (NULL, ROUND_UP (nbytes, get_allocation_unit ()), + MEM_RESERVE, PAGE_READWRITE); if (p != NULL) {