https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=06797545b3270f8cfafe1d8314970dc705f29d39

commit 06797545b3270f8cfafe1d8314970dc705f29d39
Author: Sergejs Lukanihins <[email protected]>
Date:   Fri May 25 17:27:21 2018 +0100

    Cygwin: Fixing the math behind rounding down ch.stacklimit to page size.

Diff:
---
 winsup/cygwin/fork.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc
index bcbef12..c6fef67 100644
--- a/winsup/cygwin/fork.cc
+++ b/winsup/cygwin/fork.cc
@@ -316,7 +316,7 @@ frok::parent (volatile char * volatile stack_here)
         on whether we're running on a pthread or not.  If pthread, we fetch
         the guardpage size from the pthread attribs, otherwise we use the
         system default. */
-      ch.stacklimit = (void *) ((uintptr_t) stack_here & ~wincap.page_size ());
+      ch.stacklimit = (void *) ((uintptr_t) stack_here & ~(wincap.page_size () 
- 1));
       ch.guardsize = (&_my_tls != _main_tls && _my_tls.tid)
                     ? _my_tls.tid->attr.guardsize
                     : wincap.def_guard_page_size ();

Reply via email to