Index: src/backend/utils/misc/ps_status.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v
retrieving revision 1.34
diff -c -c -r1.34 ps_status.c
*** src/backend/utils/misc/ps_status.c	5 Jan 2007 22:19:46 -0000	1.34
--- src/backend/utils/misc/ps_status.c	13 Feb 2007 23:12:53 -0000
***************
*** 91,96 ****
--- 91,97 ----
  #else							/* PS_USE_CLOBBER_ARGV */
  static char *ps_buffer;			/* will point to argv area */
  static size_t ps_buffer_size;	/* space determined at run time */
+ static size_t last_status_len;	/* use to minimize length of clobber */
  #endif   /* PS_USE_CLOBBER_ARGV */
  
  static size_t ps_buffer_fixed_size;		/* size of the constant prefix */
***************
*** 153,160 ****
  		}
  
  		ps_buffer = argv[0];
! 		ps_buffer_size = end_of_area - argv[0];
! 
  		/*
  		 * move the environment out of the way
  		 */
--- 154,161 ----
  		}
  
  		ps_buffer = argv[0];
! 		last_status_len = ps_buffer_size = end_of_area - argv[0];
! 		
  		/*
  		 * move the environment out of the way
  		 */
***************
*** 329,335 ****
  
  		/* pad unused memory */
  		buflen = strlen(ps_buffer);
! 		MemSet(ps_buffer + buflen, PS_PADDING, ps_buffer_size - buflen);
  	}
  #endif   /* PS_USE_CLOBBER_ARGV */
  
--- 330,339 ----
  
  		/* pad unused memory */
  		buflen = strlen(ps_buffer);
! 		/* clobber remainder of old status string */
! 		if (last_status_len > buflen)
! 			MemSet(ps_buffer + buflen, PS_PADDING, last_status_len - buflen);
! 		last_status_len = buflen;
  	}
  #endif   /* PS_USE_CLOBBER_ARGV */
  
