mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-13 19:57:53 +08:00
Fix memory leakage when sending notice messages to client.
This commit is contained in:
parent
aed378e8d1
commit
43568d11ad
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* 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;
|
||||
|
||||
static const char *print_timestamp(void);
|
||||
static const char *print_pid(void);
|
||||
static void send_notice_to_frontend(const char *msg);
|
||||
static void send_error_to_frontend(const char *msg);
|
||||
static void send_message_to_frontend(int type, const char *msg);
|
||||
static const char *useful_strerror(int errnum);
|
||||
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;
|
||||
|
||||
@ -667,40 +669,18 @@ write_syslog(int level, const char *line)
|
||||
#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_message_to_frontend(int type, 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
|
||||
send_notice_or_error_to_frontend(int type, const char *msg)
|
||||
{
|
||||
StringInfo buf;
|
||||
StringInfoData buf;
|
||||
|
||||
AssertArg(type == NOTICE || type == ERROR);
|
||||
|
||||
buf = makeStringInfo();
|
||||
pq_beginmessage(&buf);
|
||||
pq_sendbyte(&buf, type == NOTICE ? 'N' : 'E');
|
||||
pq_sendstring(&buf, msg);
|
||||
pq_endmessage(&buf);
|
||||
|
||||
pq_beginmessage(buf);
|
||||
pq_sendbyte(buf, type == NOTICE ? 'N' : 'E');
|
||||
pq_sendstring(buf, msg);
|
||||
pq_endmessage(buf);
|
||||
|
||||
pfree(buf);
|
||||
/*
|
||||
* This flush is normally not necessary, since postgres.c will
|
||||
* flush out waiting data when control returns to the main loop.
|
||||
|
Loading…
x
Reference in New Issue
Block a user