1111 * Portions Copyright (c) 1994, Regents of the University of California
1212 *
1313 * IDENTIFICATION
14- * $PostgreSQL: pgsql/src/backend/storage/ipc/standby.c,v 1.12 2010/02/1301:32:19 sriggs Exp $
14+ * $PostgreSQL: pgsql/src/backend/storage/ipc/standby.c,v 1.13 2010/02/1316:29:38 sriggs Exp $
1515 *
1616 *-------------------------------------------------------------------------
1717 */
@@ -164,6 +164,7 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
164164ProcSignalReason reason )
165165{
166166char waitactivitymsg [100 ];
167+ char oldactivitymsg [101 ];
167168
168169while (VirtualTransactionIdIsValid (* waitlist ))
169170{
@@ -186,17 +187,21 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
186187TimestampDifference (waitStart ,now ,& wait_s ,& wait_us );
187188if (!logged && (wait_s > 0 || wait_us > 500000 ))
188189{
189- const char * oldactivitymsg ;
190+ const char * oldactivitymsgp ;
190191int len ;
191192
192- oldactivitymsg = get_ps_display (& len );
193+ oldactivitymsgp = get_ps_display (& len );
194+
195+ if (len > 100 )
196+ len = 100 ;
197+
198+ memcpy (oldactivitymsg ,oldactivitymsgp ,len );
199+ oldactivitymsg [len ]= 0 ;
200+
193201snprintf (waitactivitymsg ,sizeof (waitactivitymsg ),
194202"waiting for max_standby_delay (%u s)" ,
195203MaxStandbyDelay );
196204set_ps_display (waitactivitymsg , false);
197- if (len > 100 )
198- len = 100 ;
199- memcpy (waitactivitymsg ,oldactivitymsg ,len );
200205
201206pgstat_report_waiting (true);
202207
@@ -226,7 +231,7 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
226231/* Reset ps display */
227232if (logged )
228233{
229- set_ps_display (waitactivitymsg , false);
234+ set_ps_display (oldactivitymsg , false);
230235pgstat_report_waiting (false);
231236}
232237