Saw the convention to tag for pgadmin3 and patch, so posting a 3rd time. Sorry - new to pgadmin.
pgadmin3-1.22.1 When compiled with gcc6, the evil practice of "this == 0" fails horribly. The most obvious effect is crashing during startup. I've attached a simple patch. The Fedora bugzilla is here: https://bugzilla.redhat.com/show_bug.cgi?id=1335043 A detailed explanation of why this == 0 is evil: http://www.viva64.com/en/b/0226/ The patch moves the guts of pgConn::GetStatus() to a static function, where comparing the ptr arg to 0 is well defined, and makes the GetStatus() member function call the static function inline. It is still technically undefined when calling the GetStatus member function on a null ptr - but for now the compiler is not eliminating the test. It is also a step in right direction, which would be to use the static function at calling sites where the ptr could be null.
diff -up ./pgadmin/db/pgConn.cpp.nullthis ./pgadmin/db/pgConn.cpp --- ./pgadmin/db/pgConn.cpp.nullthis 2016-07-01 13:18:44.649386521 -0400 +++ ./pgadmin/db/pgConn.cpp 2016-07-01 13:25:40.815813995 -0400 @@ -1003,15 +1003,15 @@ bool pgConn::IsAlive() } -int pgConn::GetStatus() const +int pgConn::GetStatus(const pgConn *p) { - if (!this) + if (!p) return PGCONN_BAD; - if (conn) - ((pgConn *)this)->connStatus = PQstatus(conn); + if (p->conn) // FIXME: casting away const ! + ((pgConn *)p)->connStatus = PQstatus(p->conn); - return connStatus; + return p->connStatus; } diff -up ./pgadmin/include/db/pgConn.h.nullthis ./pgadmin/include/db/pgConn.h --- ./pgadmin/include/db/pgConn.h.nullthis 2016-07-01 13:18:56.643512630 -0400 +++ ./pgadmin/include/db/pgConn.h 2016-07-01 13:24:07.339776340 -0400 @@ -215,7 +215,11 @@ public: { return PQbackendPID(conn); } - int GetStatus() const; + static int GetStatus(const pgConn *); + int GetStatus() const + { + return GetStatus(this); + } int GetLastResultStatus() const { return lastResultStatus;
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers