From: Robert Haas Date: Fri, 5 Dec 2014 00:47:06 +0000 (-0500) Subject: Don't dump core if pq_comm_reset() is called before pq_init(). X-Git-Tag: REL9_5_ALPHA1~1101 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9a946298338e4783fcc98e0896712fdf2b2bfd56;p=thirdparty%2Fpostgresql.git Don't dump core if pq_comm_reset() is called before pq_init(). This can happen if an error occurs in a standalone backend. This bug was introduced by commit 2bd9e412f92bc6a68f3e8bcb18e04955cc35001d. Reported by Álvaro Herrera. --- diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 74161970ab5..a4abf3ab832 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -105,9 +105,6 @@ char *Unix_socket_group; /* Where the Unix socket files are (list of palloc'd strings) */ static List *sock_paths = NIL; -PQcommMethods *PqCommMethods; - - /* * Buffers for low-level I/O. * @@ -154,8 +151,6 @@ static int Lock_AF_UNIX(char *unixSocketDir, char *unixSocketPath); static int Setup_AF_UNIX(char *sock_path); #endif /* HAVE_UNIX_SOCKETS */ -PQcommMethods PQcommSocketMethods; - static PQcommMethods PqCommSocketMethods = { socket_comm_reset, socket_flush, @@ -167,6 +162,9 @@ static PQcommMethods PqCommSocketMethods = { socket_endcopyout }; +PQcommMethods *PqCommMethods = &PqCommSocketMethods; + + /* -------------------------------- * pq_init - initialize libpq at backend startup @@ -175,7 +173,6 @@ static PQcommMethods PqCommSocketMethods = { void pq_init(void) { - PqCommMethods = &PqCommSocketMethods; PqSendBufferSize = PQ_SEND_BUFFER_SIZE; PqSendBuffer = MemoryContextAlloc(TopMemoryContext, PqSendBufferSize); PqSendPointer = PqSendStart = PqRecvPointer = PqRecvLength = 0;