From 62d172bb493a8183b4c50ed8cc719683086b6a48 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 30 Jan 2007 21:53:05 +0000 Subject: [PATCH] * sigproc.cc (child_info::child_info): Set msv_count to non-zero value only on systems requiring it. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/sigproc.cc | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 86cd170b2..e6e2131cb 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2007-01-30 Corinna Vinschen + + * sigproc.cc (child_info::child_info): Set msv_count to non-zero + value only on systems requiring it. + 2007-01-28 Corinna Vinschen * include/ftw.h: Include sys/cdefs.h. diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index a8d4a3321..56f9622f5 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -804,14 +804,14 @@ child_info::child_info (unsigned in_cb, child_info_types chtype, bool need_subpr count doesn't result in trying to evaluate the content, so we do this really only for Vista 64 for now. - However, since this doesn't seem to harm normal windows operation we'll - just set it unconditionally until we hear complaints. + Note: It turns out that a non-zero value *does* harm operation on + XP 64 and 2K3 64 (Crash in CreateProcess call). The value is sizeof (child_info_*) / 5 which results in a count which covers the full datastructure, plus not more than 4 extra bytes. This is ok as long as the child_info structure is cosily stored within a bigger datastructure. */ - msv_count = in_cb / 5; + msv_count = wincap.needs_count_in_si_lpres2 () ? in_cb / 5 : 0; intro = PROC_MAGIC_GENERIC; magic = CHILD_INFO_MAGIC;