diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c index a357260362..d727dfe9fb 100644 --- a/src/backend/utils/misc/ps_status.c +++ b/src/backend/utils/misc/ps_status.c @@ -5,7 +5,7 @@ * to contain some useful information. Mechanism differs wildly across * platforms. * - * $Header: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v 1.14 2003/08/04 23:59:39 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v 1.15 2003/11/08 19:07:24 tgl Exp $ * * Copyright (c) 2000-2003, PostgreSQL Global Development Group * various details abducted from various places @@ -57,7 +57,7 @@ extern char **environ; #define PS_USE_PSTAT #elif defined(HAVE_PS_STRINGS) #define PS_USE_PS_STRINGS -#elif defined(BSD) || defined(__bsdi__) || defined(__hurd__) +#elif (defined(BSD) || defined(__bsdi__) || defined(__hurd__)) && !defined(__darwin__) #define PS_USE_CHANGE_ARGV #elif defined(__linux__) || defined(_AIX) || defined(__sgi) || (defined(sun) && !defined(BSD)) || defined(ultrix) || defined(__ksr__) || defined(__osf__) || defined(__QNX__) || defined(__svr4__) || defined(__svr5__) || defined(__darwin__) #define PS_USE_CLOBBER_ARGV @@ -143,7 +143,7 @@ save_ps_display_args(int argc, char *argv[]) } ps_buffer = argv[0]; - ps_buffer_size = end_of_area - argv[0] - 1; + ps_buffer_size = end_of_area - argv[0]; /* * move the environment out of the way @@ -193,7 +193,13 @@ init_ps_display(const char *username, const char *dbname, #endif /* PS_USE_CHANGE_ARGV */ #ifdef PS_USE_CLOBBER_ARGV - save_argv[1] = NULL; + { + int i; + + /* make extra argv slots point at end_of_area (a NUL) */ + for (i = 1; i < save_argc; i++) + save_argv[i] = ps_buffer + ps_buffer_size; + } #endif /* PS_USE_CLOBBER_ARGV */ /*