]> granicus.if.org Git - postgresql/commitdiff
Fix memory leakage when sending notice messages to client.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 18 Oct 2001 23:07:29 +0000 (23:07 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 18 Oct 2001 23:07:29 +0000 (23:07 +0000)
src/backend/utils/error/elog.c

index 2766205c049a8804582aa89de079d8d2d2a843ac..4e1ab2684c225da35fbf7dfe48021d94c5b71197 100644 (file)
@@ -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_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)
+send_message_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.