|
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 |
|
|