Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfb1132e

Browse files
committed
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 16This is due to a compiler bug:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104986It has been a year since the bug has been reported without getting fixed. Asthe warnings are verbose and use of gcc 12 is becoming more common, it seemsworth working around the bug. Particularly because a simple reformulation ofthe 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.usBackpatch: 11-
1 parent75e7378 commitfb1132e

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

‎src/backend/utils/adt/network.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,7 @@ inetnot(PG_FUNCTION_ARGS)
18741874
unsignedchar*pip=ip_addr(ip);
18751875
unsignedchar*pdst=ip_addr(dst);
18761876

1877-
while (nb-->0)
1877+
while (--nb >=0)
18781878
pdst[nb]= ~pip[nb];
18791879
}
18801880
ip_bits(dst)=ip_bits(ip);
@@ -1906,7 +1906,7 @@ inetand(PG_FUNCTION_ARGS)
19061906
unsignedchar*pip2=ip_addr(ip2);
19071907
unsignedchar*pdst=ip_addr(dst);
19081908

1909-
while (nb-->0)
1909+
while (--nb >=0)
19101910
pdst[nb]=pip[nb]&pip2[nb];
19111911
}
19121912
ip_bits(dst)=Max(ip_bits(ip),ip_bits(ip2));
@@ -1938,7 +1938,7 @@ inetor(PG_FUNCTION_ARGS)
19381938
unsignedchar*pip2=ip_addr(ip2);
19391939
unsignedchar*pdst=ip_addr(dst);
19401940

1941-
while (nb-->0)
1941+
while (--nb >=0)
19421942
pdst[nb]=pip[nb] |pip2[nb];
19431943
}
19441944
ip_bits(dst)=Max(ip_bits(ip),ip_bits(ip2));
@@ -1963,7 +1963,7 @@ internal_inetpl(inet *ip, int64 addend)
19631963
unsignedchar*pdst=ip_addr(dst);
19641964
intcarry=0;
19651965

1966-
while (nb-->0)
1966+
while (--nb >=0)
19671967
{
19681968
carry=pip[nb]+ (int) (addend&0xFF)+carry;
19691969
pdst[nb]= (unsignedchar) (carry&0xFF);
@@ -2047,7 +2047,7 @@ inetmi(PG_FUNCTION_ARGS)
20472047
unsignedchar*pip2=ip_addr(ip2);
20482048
intcarry=1;
20492049

2050-
while (nb-->0)
2050+
while (--nb >=0)
20512051
{
20522052
intlobyte;
20532053

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp