Commit 43568d11 authored by Tom Lane's avatar Tom Lane

Fix memory leakage when sending notice messages to client.

parent aed378e8
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.88 2001/08/06 21:55:13 petere Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.89 2001/10/18 23:07:29 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -63,11 +63,13 @@ bool Log_pid; ...@@ -63,11 +63,13 @@ bool Log_pid;
static const char *print_timestamp(void); static const char *print_timestamp(void);
static const char *print_pid(void); static const char *print_pid(void);
static void send_notice_to_frontend(const char *msg); static void send_message_to_frontend(int type, const char *msg);
static void send_error_to_frontend(const char *msg);
static const char *useful_strerror(int errnum); static const char *useful_strerror(int errnum);
static const char *elog_message_prefix(int lev); static const char *elog_message_prefix(int lev);
#define send_notice_to_frontend(msg) send_message_to_frontend(NOTICE, msg)
#define send_error_to_frontend(msg) send_message_to_frontend(ERROR, msg)
static int Debugfile = -1; static int Debugfile = -1;
...@@ -667,40 +669,18 @@ write_syslog(int level, const char *line) ...@@ -667,40 +669,18 @@ write_syslog(int level, const char *line)
#endif /* ENABLE_SYSLOG */ #endif /* ENABLE_SYSLOG */
static void
send_notice_or_error_to_frontend(int type, const char *msg);
static void
send_notice_to_frontend(const char *msg)
{
send_notice_or_error_to_frontend(NOTICE, msg);
}
static void
send_error_to_frontend(const char *msg)
{
send_notice_or_error_to_frontend(ERROR, msg);
}
static void static void
send_notice_or_error_to_frontend(int type, const char *msg) send_message_to_frontend(int type, const char *msg)
{ {
StringInfo buf; StringInfoData buf;
AssertArg(type == NOTICE || type == ERROR); AssertArg(type == NOTICE || type == ERROR);
buf = makeStringInfo(); pq_beginmessage(&buf);
pq_sendbyte(&buf, type == NOTICE ? 'N' : 'E');
pq_beginmessage(buf); pq_sendstring(&buf, msg);
pq_sendbyte(buf, type == NOTICE ? 'N' : 'E'); pq_endmessage(&buf);
pq_sendstring(buf, msg);
pq_endmessage(buf);
pfree(buf);
/* /*
* This flush is normally not necessary, since postgres.c will * This flush is normally not necessary, since postgres.c will
* flush out waiting data when control returns to the main loop. * flush out waiting data when control returns to the main loop.
......
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