]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Work around spurious compiler warning in inet operators
authorAndres Freund <andres@anarazel.de>
Thu, 16 Mar 2023 21:08:44 +0000 (14:08 -0700)
committerAndres Freund <andres@anarazel.de>
Thu, 16 Mar 2023 21:48:46 +0000 (14:48 -0700)
commita7a92738ffce35b480d20965ad95317729ae96a2
treec842a434fdc213fabc33d4f968ab1e3c2dc913a9
parent00fc4b3a31010033e8b1a964c90a7a30b8d6a7d7
Work around spurious compiler warning in inet operators

gcc 12+ has complaints like the following:

../../../../../pgsql/src/backend/utils/adt/network.c: In function 'inetnot':
../../../../../pgsql/src/backend/utils/adt/network.c:1893:34: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
 1893 |                         pdst[nb] = ~pip[nb];
      |                         ~~~~~~~~~^~~~~~~~~~
../../../../../pgsql/src/include/utils/inet.h:27:23: note: at offset -1 into destination object 'ipaddr' of size 16
   27 |         unsigned char ipaddr[16];       /* up to 128 bits of address */
      |                       ^~~~~~
../../../../../pgsql/src/include/utils/inet.h:27:23: note: at offset -1 into destination object 'ipaddr' of size 16

This is due to a compiler bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104986

It has been a year since the bug has been reported without getting fixed. As
the warnings are verbose and use of gcc 12 is becoming more common, it seems
worth working around the bug. Particularly because a simple reformulation of
the loop condition fixes the issue and isn't any less readable.

Author: Tom Lane <tgl@sss.pgh.pa.us>
Author: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/144536.1648326206@sss.pgh.pa.us
Backpatch: 11-
src/backend/utils/adt/network.c