diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c
index 3125a9065c89bcc7f44935f8f6fce424f292a090..914ebe7a47d989bca3da4fe26971ae738f223e00 100644
--- a/src/interfaces/ecpg/ecpglib/misc.c
+++ b/src/interfaces/ecpg/ecpglib/misc.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.45 2008/12/15 15:34:07 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.46 2008/12/15 19:07:48 tgl Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
@@ -242,31 +242,36 @@ ecpg_log(const char *format,...)
 {
 	va_list		ap;
 	struct sqlca_t	*sqlca = ECPGget_sqlca();
-	int		bufsize = strlen(format) + 100;
-	char		*f = (char *) malloc(bufsize),
-			*intl_format;
+	const char *intl_format;
+	int			bufsize;
+	char		*fmt;
 
-	if (!simple_debug || f == NULL)
+	if (!simple_debug)
 		return;
 
 	/* internationalize the error message string */
 	intl_format = ecpg_gettext(format);
 
 	/*
-	 * regression tests set this environment variable to get the same
-	 * output for every run.
+	 * Insert PID into the format, unless ecpg_internal_regression_mode is
+	 * set (regression tests want unchanging output).
 	 */
+	bufsize = strlen(intl_format) + 100;
+	fmt = (char *) malloc(bufsize);
+	if (fmt == NULL)
+		return;
+
 	if (ecpg_internal_regression_mode)
-		snprintf(f, bufsize, "[NO_PID]: %s", intl_format);
+		snprintf(fmt, bufsize, "[NO_PID]: %s", intl_format);
 	else
-		snprintf(f, bufsize, "[%d]: %s", (int) getpid(), intl_format);
+		snprintf(fmt, bufsize, "[%d]: %s", (int) getpid(), intl_format);
 
 #ifdef ENABLE_THREAD_SAFETY
 	pthread_mutex_lock(&debug_mutex);
 #endif
 
 	va_start(ap, format);
-	vfprintf(debugstream, f, ap);
+	vfprintf(debugstream, fmt, ap);
 	va_end(ap);
 
 	/* dump out internal sqlca variables */
@@ -280,7 +285,7 @@ ecpg_log(const char *format,...)
 	pthread_mutex_unlock(&debug_mutex);
 #endif
 
-	free(f);
+	free(fmt);
 }
 
 void