Commit f3162229 authored by Tom Lane's avatar Tom Lane

Fix erroneous Assert() in syslogger process start in EXEC_BACKEND case,

per ITAGAKI Takahiro.  Also, rewrite syslogger_forkexec() in hopes of
eliminating the confusion in the first place.
parent bbda96d7
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.39 2007/09/20 18:19:08 adunstan Exp $ * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.40 2007/09/22 18:19:18 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -608,10 +608,8 @@ static pid_t ...@@ -608,10 +608,8 @@ static pid_t
syslogger_forkexec(void) syslogger_forkexec(void)
{ {
char *av[10]; char *av[10];
int ac = 0, int ac = 0;
bufc = 0, char filenobuf[32];
i;
char numbuf[2][32];
av[ac++] = "postgres"; av[ac++] = "postgres";
av[ac++] = "--forklog"; av[ac++] = "--forklog";
...@@ -620,21 +618,18 @@ syslogger_forkexec(void) ...@@ -620,21 +618,18 @@ syslogger_forkexec(void)
/* static variables (those not passed by write_backend_variables) */ /* static variables (those not passed by write_backend_variables) */
#ifndef WIN32 #ifndef WIN32
if (syslogFile != NULL) if (syslogFile != NULL)
snprintf(numbuf[bufc++], 32, "%d", fileno(syslogFile)); snprintf(filenobuf, sizeof(filenobuf), "%d",
fileno(syslogFile));
else else
strcpy(numbuf[bufc++], "-1"); strcpy(filenobuf, "-1");
#else /* WIN32 */ #else /* WIN32 */
if (syslogFile != NULL) if (syslogFile != NULL)
snprintf(numbuf[bufc++], 32, "%ld", snprintf(filenobuf, sizeof(filenobuf), "%ld",
_get_osfhandle(_fileno(syslogFile))); _get_osfhandle(_fileno(syslogFile)));
else else
strcpy(numbuf[bufc++], "0"); strcpy(filenobuf, "0");
#endif /* WIN32 */ #endif /* WIN32 */
av[ac++] = filenobuf;
/* Add to the arg list */
Assert(bufc <= lengthof(numbuf));
for (i = 0; i < bufc; i++)
av[ac++] = numbuf[i];
av[ac] = NULL; av[ac] = NULL;
Assert(ac < lengthof(av)); Assert(ac < lengthof(av));
...@@ -652,7 +647,7 @@ syslogger_parseArgs(int argc, char *argv[]) ...@@ -652,7 +647,7 @@ syslogger_parseArgs(int argc, char *argv[])
{ {
int fd; int fd;
Assert(argc == 5); Assert(argc == 4);
argv += 3; argv += 3;
#ifndef WIN32 #ifndef WIN32
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment