Thread: xloginsert.c hole_length warning on gcc 4.8.3
Hi there, with gcc 4.8.3, I'm getting this warning in xloginsert.c: ------------------------- xloginsert.c: In function ‘XLogInsert’: xloginsert.c:668:20: warning: ‘hole_length’ may be used uninitialized in this function [-Wmaybe-uninitialized] if (hole_length != 0 && is_compressed) ^ xloginsert.c:497:10: note: ‘hole_length’ was declared here uint16 hole_length; ------------------------- The compiler seems to be confused probably because the code is structured like this: { uint16 hole_length; uint16 hole_offset; if (needs_backup) { ... initialize hole_length/hole_offset ... } if (needs_data) { ... } if (needs_backup) { ... use hole_length/hole_offset ... } } and does not realize the two blocks referencing the variables use the same condition. Initializing the variables at the very beginning (and simplifying the first block a bit) seems like a good fix - patch attached. -- Tomas Vondra http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment
On Sat, Mar 14, 2015 at 8:39 AM, Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote: > Hi there, > > with gcc 4.8.3, I'm getting this warning in xloginsert.c: Thanks for the report! I fixed this problem at the commit cd6c45c. Regards, -- Fujii Masao