|
5 | 5 | * to contain some useful information. Mechanism differs wildly across
|
6 | 6 | * platforms.
|
7 | 7 | *
|
8 |
| - * $PostgreSQL: pgsql/src/backend/utils/misc/ps_status.c,v 1.34 2007/01/05 22:19:46 momjian Exp $ |
| 8 | + * $PostgreSQL: pgsql/src/backend/utils/misc/ps_status.c,v 1.35 2007/02/16 21:34:04 momjian Exp $ |
9 | 9 | *
|
10 | 10 | * Copyright (c) 2000-2007, PostgreSQL Global Development Group
|
11 | 11 | * various details abducted from various places
|
@@ -91,6 +91,7 @@ static const size_t ps_buffer_size = PS_BUFFER_SIZE;
|
91 | 91 | #else/* PS_USE_CLOBBER_ARGV */
|
92 | 92 | staticchar*ps_buffer;/* will point to argv area */
|
93 | 93 | staticsize_tps_buffer_size;/* space determined at run time */
|
| 94 | +staticsize_tlast_status_len;/* use to minimize length of clobber */ |
94 | 95 | #endif/* PS_USE_CLOBBER_ARGV */
|
95 | 96 |
|
96 | 97 | staticsize_tps_buffer_fixed_size;/* size of the constant prefix */
|
@@ -153,8 +154,8 @@ save_ps_display_args(int argc, char **argv)
|
153 | 154 | }
|
154 | 155 |
|
155 | 156 | ps_buffer=argv[0];
|
156 |
| -ps_buffer_size=end_of_area-argv[0]; |
157 |
| - |
| 157 | +last_status_len=ps_buffer_size=end_of_area-argv[0]; |
| 158 | +
|
158 | 159 | /*
|
159 | 160 | * move the environment out of the way
|
160 | 161 | */
|
@@ -329,7 +330,10 @@ set_ps_display(const char *activity, bool force)
|
329 | 330 |
|
330 | 331 | /* pad unused memory */
|
331 | 332 | buflen=strlen(ps_buffer);
|
332 |
| -MemSet(ps_buffer+buflen,PS_PADDING,ps_buffer_size-buflen); |
| 333 | +/* clobber remainder of old status string */ |
| 334 | +if (last_status_len>buflen) |
| 335 | +MemSet(ps_buffer+buflen,PS_PADDING,last_status_len-buflen); |
| 336 | +last_status_len=buflen; |
333 | 337 | }
|
334 | 338 | #endif/* PS_USE_CLOBBER_ARGV */
|
335 | 339 |
|
|