diff -durpN postgresql.3/src/interfaces/libpq/libpq-fe.h postgresql.4/src/interfaces/libpq/libpq-fe.h --- postgresql.3/src/interfaces/libpq/libpq-fe.h 2013-01-02 09:19:03.929522614 +0100 +++ postgresql.4/src/interfaces/libpq/libpq-fe.h 2013-01-02 16:10:51.978974575 +0100 @@ -256,6 +256,16 @@ extern PGconn *PQsetdbLogin(const char * /* close the current connection and free the PGconn data structure */ extern void PQfinish(PGconn *conn); +/* macro to close the current connection and set the conn pointer to NULL */ +#define PQfinishSafe(conn) \ + { \ + if (conn) \ + { \ + PQfinish(conn); \ + conn = NULL; \ + } \ + } + /* get info about connection options known to PQconnectdb */ extern PQconninfoOption *PQconndefaults(void); @@ -472,6 +482,16 @@ extern int PQsendDescribePortal(PGconn * /* Delete a PGresult */ extern void PQclear(PGresult *res); +/* Macro to delete a PGresult and set the res pointer to NULL */ +#define PQclearSafe(res) \ + { \ + if (res) \ + { \ + PQclear(res); \ + res = NULL; \ + } \ + } + /* For freeing other alloc'd results, such as PGnotify structs */ extern void PQfreemem(void *ptr);