Thread: Dubious coding in nbtinsert.c
Buildfarm member curculio, which doesn't usually produce uninitialized-variable warnings, is showing one here: nbtinsert.c: In function '_bt_doinsert': nbtinsert.c:411: warning: 'curitemid' may be used uninitialized in this function nbtinsert.c:411: note: 'curitemid' was declared here I can see its point: curitemid is set only if !inposting. While the first two uses of the value are clearly reached only if !inposting, it's FAR from clear that it's impossible to reach "ItemIdMarkDead(curitemid);" without a valid value. Could you clean that up? regards, tom lane
On Thu, Apr 8, 2021 at 12:19 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Buildfarm member curculio, which doesn't usually produce > uninitialized-variable warnings, is showing one here: > > nbtinsert.c: In function '_bt_doinsert': > nbtinsert.c:411: warning: 'curitemid' may be used uninitialized in this function > nbtinsert.c:411: note: 'curitemid' was declared here > > I can see its point: curitemid is set only if !inposting. > While the first two uses of the value are clearly reached > only if !inposting, it's FAR from clear that it's impossible > to reach "ItemIdMarkDead(curitemid);" without a valid value. > Could you clean that up? I'll take care of it shortly. You had a near-identical complaint about a compiler warning that led to my commit d64f1cdf2f4 -- that one involved _bt_check_unique()'s curitup, while this one is about curitemid. While I have no problem silencing this compiler warning now, I don't see any reason to not just do the same thing again. Which is to initialize the pointer to NULL. -- Peter Geoghegan
Peter Geoghegan <pg@bowt.ie> writes: > You had a near-identical complaint about a compiler warning that led > to my commit d64f1cdf2f4 -- that one involved _bt_check_unique()'s > curitup, while this one is about curitemid. While I have no problem > silencing this compiler warning now, I don't see any reason to not > just do the same thing again. Which is to initialize the pointer to > NULL. Works for me; if there is any bug in the logic, we'll get a core dump and can investigate. regards, tom lane