Cygwin: cygheap: fix fork error after heap has grown
2f9b8ff0
introduced a problem where forks would sometimes fail with: child_copy: cygheap read copy failed, 0x0..0x80044C750, done 0, windows pid 14032, Win32 error 299 When cygheap_max was > CYGHEAP_STORAGE_INITIAL, commit_size would be set to allocsize(cygheap_max), which is an address, not a size. VirtualAlloc would be called to commit commit_size bytes, which would fail, and then child_copy would be called with zero as the base address. Fixes:2f9b8ff00c
("Cygwin: decouple cygheap from Cygwin DLL") Signed-off-by: David McFarland <corngood@gmail.com>
This commit is contained in:
parent
e5fcc5837c
commit
a14a0e542d
|
@ -87,7 +87,8 @@ cygheap_fixup_in_child (bool execed)
|
|||
SIZE_T commit_size = CYGHEAP_STORAGE_INITIAL - CYGHEAP_STORAGE_LOW;
|
||||
|
||||
if (child_proc_info->cygheap_max > (void *) CYGHEAP_STORAGE_INITIAL)
|
||||
commit_size = allocsize (child_proc_info->cygheap_max);
|
||||
commit_size = allocsize ((char *) child_proc_info->cygheap_max
|
||||
- CYGHEAP_STORAGE_LOW);
|
||||
cygheap = (init_cygheap *) VirtualAlloc ((LPVOID) CYGHEAP_STORAGE_LOW,
|
||||
CYGHEAP_STORAGE_HIGH
|
||||
- CYGHEAP_STORAGE_LOW,
|
||||
|
|
Loading…
Reference in New Issue