* child_info.h (child_proc_info): Declare as base class.
(spawn_info): Declare as alias of child_proc_info to aid debugging. (fork_info): Ditto. * cygheap.cc (cygheap_fixup_in_child): Use child_proc_info global rather than parameter. * cygheap.h (cygheap_fixup_in_child): Reflect above change in declaration. * dcrt0.cc (_dll_crt0): Move 'si' definition here. Assign child_proc_info. (dll_crt0_1): Accommodate cygheap_fixup_in_child and *_info changes. * environ.cc (spenv::retrieve): Make regparm. * environ.h (environ_init): Ditto. (win_env::add_cache): Ditto. (build_env): Ditto. (getwinenv): Ditto. * fork.cc (sync_with_parent): Use fork_info global. (fork_child): Ditto.
This commit is contained in:
@ -110,18 +110,18 @@ cygheap_setup_for_child_cleanup (void *newcygheap, child_info *ci,
|
||||
|
||||
/* Called by fork or spawn to reallocate cygwin heap */
|
||||
void __stdcall
|
||||
cygheap_fixup_in_child (child_info *ci, bool execed)
|
||||
cygheap_fixup_in_child (bool execed)
|
||||
{
|
||||
cygheap = ci->cygheap;
|
||||
cygheap_max = ci->cygheap_max;
|
||||
cygheap = child_proc_info->cygheap;
|
||||
cygheap_max = child_proc_info->cygheap_max;
|
||||
void *addr = !wincap.map_view_of_file_ex_sucks () ? cygheap : NULL;
|
||||
void *newaddr;
|
||||
|
||||
newaddr = MapViewOfFileEx (ci->cygheap_h, MVMAP_OPTIONS, 0, 0, 0, addr);
|
||||
newaddr = MapViewOfFileEx (child_proc_info->cygheap_h, MVMAP_OPTIONS, 0, 0, 0, addr);
|
||||
if (newaddr != cygheap)
|
||||
{
|
||||
if (!newaddr)
|
||||
newaddr = MapViewOfFileEx (ci->cygheap_h, MVMAP_OPTIONS, 0, 0, 0, NULL);
|
||||
newaddr = MapViewOfFileEx (child_proc_info->cygheap_h, MVMAP_OPTIONS, 0, 0, 0, NULL);
|
||||
DWORD n = (DWORD) cygheap_max - (DWORD) cygheap;
|
||||
/* Reserve cygwin heap in same spot as parent */
|
||||
if (!VirtualAlloc (cygheap, CYGHEAPSIZE, MEM_RESERVE, PAGE_NOACCESS))
|
||||
@ -144,7 +144,7 @@ cygheap_fixup_in_child (child_info *ci, bool execed)
|
||||
UnmapViewOfFile (newaddr);
|
||||
}
|
||||
|
||||
ForceCloseHandle1 (ci->cygheap_h, passed_cygheap_h);
|
||||
ForceCloseHandle1 (child_proc_info->cygheap_h, passed_cygheap_h);
|
||||
|
||||
cygheap_init ();
|
||||
|
||||
|
Reference in New Issue
Block a user