BUG #15802: Comparison of a function returning boolean value using relational (<, >, <= or >=) operator

Started by PG Bug reporting formalmost 7 years ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 15802
Logged by: David Binderman
Email address: dcb314@hotmail.com
PostgreSQL version: 11.3
Operating system: Linux
Description:

postgresql-11.3/src/interfaces/libpq/fe-misc.c:1060]: (style) Comparison of
a function returning boolean value using relational (<, >, <= or >=)
operator.

Source code is

if (forRead && conn->ssl_in_use && pgtls_read_pending(conn) > 0)

but

./src/interfaces/libpq/libpq-int.h:extern bool pgtls_read_pending(PGconn
*conn);

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #15802: Comparison of a function returning boolean value using relational (<, >, <= or >=) operator

PG Bug reporting form <noreply@postgresql.org> writes:

postgresql-11.3/src/interfaces/libpq/fe-misc.c:1060]: (style) Comparison of
a function returning boolean value using relational (<, >, <= or >=)
operator.
Source code is
if (forRead && conn->ssl_in_use && pgtls_read_pending(conn) > 0)
but
./src/interfaces/libpq/libpq-int.h:extern bool pgtls_read_pending(PGconn
*conn);

It looks like the "> 0" belongs inside pgtls_read_pending, since
SSL_pending is documented to return an integer count. This is
probably harmless with C99-style bools, but if we were doing it
like that before PG v12, it could be a live bug in the back
branches. I'll check.

Thanks for the report!

regards, tom lane