Fix cast-away-const problem as well as bogus calculation of required buffer size.
This commit is contained in:
parent
66bb74dbe8
commit
d1c24460bf
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user