* cygheap.cc (cygheap_fixup_in_child): Attempt Win95 workaround.
* dtable.cc (dtable::dup_worker): Add debugging output. (dtable::vfork_child_dup): Correctly set close_on_exec. * fhandler.cc (fhandler_base::fork_fixup): Don't mess with handle if there is no need to get it from the parent. * fhandler_tty.cc (fhandler_tty_common::close): Add debugging output.
This commit is contained in:
		| @@ -74,7 +74,7 @@ cygheap_setup_for_child (child_info *ci) | ||||
|   newcygheap = MapViewOfFileEx (ci->cygheap_h, FILE_MAP_READ | FILE_MAP_WRITE, | ||||
| 				0, 0, 0, NULL); | ||||
|   if (!VirtualAlloc (newcygheap, n, MEM_COMMIT, PAGE_READWRITE)) | ||||
|     api_fatal ("couldn't allocate new heap for child, %E"); | ||||
|     api_fatal ("couldn't allocate new cygwin heap for child, %E"); | ||||
|   memcpy (newcygheap, cygheap, n); | ||||
|   UnmapViewOfFile (newcygheap); | ||||
|   ci->cygheap = cygheap; | ||||
| @@ -96,9 +96,11 @@ cygheap_fixup_in_child (child_info *ci, bool execed) | ||||
| 			DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE)) | ||||
|     cygheap_h = ci->cygheap_h; | ||||
| #endif | ||||
|   VirtualFree (cygheap, CYGHEAPSIZE, MEM_DECOMMIT); | ||||
|   VirtualFree (cygheap, 0, MEM_RELEASE); | ||||
|   if (MapViewOfFileEx (ci->cygheap_h, FILE_MAP_READ | FILE_MAP_WRITE, | ||||
| 		       0, 0, 0, cygheap) != cygheap) | ||||
|     api_fatal ("Couldn't allocate space for child's heap from %p, to %p, %E", | ||||
| 		       0, 0, CYGHEAPSIZE, cygheap) != cygheap) | ||||
|     api_fatal ("Couldn't allocate space for child's cygwin heap from %p, to %p, %E", | ||||
| 	       cygheap, cygheap_max); | ||||
|  | ||||
|   ForceCloseHandle1 (ci->cygheap_h, passed_cygheap_h); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user