diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 4f3aa7bea..948edce87 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,7 +1,13 @@ +2008-02-15 Corinna Vinschen + + * include/sys/cygwin.h (__INT_MAX_PATH): Remove. + (external_pinfo): Convert program_long to pointer. + * external.cc (fillout_pinfo): Add buffer for program_long value. + 2008-02-15 Corinna Vinschen * include/sys/cygwin.h (__INT_MAX_PATH): Define to 32K. - (external_pinfo): Set size to __INT_MAX_PATH. + (external_pinfo): Set size of program_long to __INT_MAX_PATH. 2008-02-15 Christopher Faylor diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc index cc080d2d2..111bd31c5 100644 --- a/winsup/cygwin/external.cc +++ b/winsup/cygwin/external.cc @@ -42,6 +42,7 @@ fillout_pinfo (pid_t pid, int winpid) { BOOL nextpid; static external_pinfo ep; + static char ep_progname_long_buf[NT_MAX_PATH]; if ((nextpid = !!(pid & CW_NEXTPID))) pid ^= CW_NEXTPID; @@ -98,6 +99,7 @@ fillout_pinfo (pid_t pid, int winpid) ep.uid32 = p->uid; ep.gid32 = p->gid; + ep.progname_long = ep_progname_long_buf; strcpy (ep.progname_long, p->progname); break; } diff --git a/winsup/cygwin/include/sys/cygwin.h b/winsup/cygwin/include/sys/cygwin.h index e068d7342..51247e54a 100644 --- a/winsup/cygwin/include/sys/cygwin.h +++ b/winsup/cygwin/include/sys/cygwin.h @@ -237,8 +237,6 @@ typedef unsigned long __uid32_t; typedef unsigned long __gid32_t; #endif -#define __INT_MAX_PATH 32768 - struct external_pinfo { pid_t pid; @@ -268,7 +266,7 @@ struct external_pinfo __gid32_t gid32; /* Only available if version >= EXTERNAL_PINFO_VERSION_32_LP */ - char progname_long[__INT_MAX_PATH]; + char *progname_long; }; #endif /*__CYGWIN__*/ #endif /*WINVER*/