]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix sysUsed for Windows
authorMichael Anthony Knyszek <mknyszek@google.com>
Tue, 11 Dec 2018 18:26:42 +0000 (18:26 +0000)
committerMichael Knyszek <mknyszek@google.com>
Mon, 17 Dec 2018 22:42:27 +0000 (22:42 +0000)
sysUsed on Windows cares about the result from the VirtualAlloc syscall
returning exactly the address that was passed to it. However,
VirtualAlloc aligns the address its given to the kernel's allocation
granularity, so the returned address may not be the same.

Note that this wasn't an issue in the past because we only sysUsed
regions owned by spans, and spans are always a multiple of 8K, which
is a multiple of the allocation granularity on most Windows machines.

Change-Id: I3f5ccd63c6bbbd8b7995945ecedee17573b31667
Reviewed-on: https://go-review.googlesource.com/c/153677
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/mem_windows.go

index 690f55eb5c83a42b42ce0ea83d189660060219ac..fc52ec59a05e0f082d207649901dc48e6793b7ed 100644 (file)
@@ -61,7 +61,7 @@ func sysUnused(v unsafe.Pointer, n uintptr) {
 
 func sysUsed(v unsafe.Pointer, n uintptr) {
        r := stdcall4(_VirtualAlloc, uintptr(v), n, _MEM_COMMIT, _PAGE_READWRITE)
-       if r == uintptr(v) {
+       if r != 0 {
                return
        }