BUG #19066: postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86: Array index check in wrong place ?

Started by PG Bug reporting form7 months ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 19066
Logged by: David Binderman
Email address: dcb314@hotmail.com
PostgreSQL version: 18.0
Operating system: fedora 42
Description:

Static analyser cppcheck says:

postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86:22: style: Array
index 'j' is used before limits check. [arrayIndexThenCheck]

Source code is

while ((city_table[j].select_list == -1) && (j < num_gene))

Suggest new source code

while ((j < num_gene) && (city_table[j].select_list == -1))

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #19066: postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86: Array index check in wrong place ?

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

Static analyser cppcheck says:

postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86:22: style: Array
index 'j' is used before limits check. [arrayIndexThenCheck]

Did your static analyzer not notice that this dead code is
not even compiled? I don't have a lot of faith in analyzers
that ignore #ifdefs.

(It's fair to ask why we haven't removed this code altogether
... laziness I guess, or waiting for something better than
GEQO to come along. But expending effort on fixing it
is definitely not in the cards.)

regards, tom lane