From: Sam S. <sd...@gn...> - 2017-12-06 19:23:18
|
Hi, I get this: --8<---------------cut here---------------start------------->8--- modules/rawsock/rawsock.c:893:48: warning: multiple unsequenced modifications to 'STACK' [-Wunsequenced] --8<---------------cut here---------------end--------------->8--- because of --8<---------------cut here---------------start------------->8--- struct addrinfo hints = {addrinfo_flags(), check_socket_domain(popSTACK()), check_socket_type(popSTACK()), get_socket_protocol(popSTACK()), 0,NULL,NULL,NULL}; --8<---------------cut here---------------end--------------->8--- It appears that the code _should_ DTRT in all commercial compilers and GCC 3.4.6 or later. https://stackoverflow.com/q/19881803/850781 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11633 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#430 What should be done about this? It is easy to rewrite the code (replace popSTACK() with STACK_??? and add skipSTACK() at the end) but this would be a lie because addrinfo_flags() modifies STACK too, so we are relying on the sequential evaluation of all slots in the initialization no matter what. The only honest way to avoid the issue is --8<---------------cut here---------------start------------->8--- struct addrinfo hints = {0,0,0,0,0,NULL,NULL,NULL}; hints.ai_flags = addrinfo_flags(); hints.ai_family = check_socket_domain(popSTACK()); hints.ai_socktype = check_socket_type(popSTACK()); hints.ai_protocol = get_socket_protocol(popSTACK()); --8<---------------cut here---------------end--------------->8--- Bruno, does it make sense? It is worth bothering with? Thanks -- Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.1504 http://steingoldpsychology.com http://www.childpsy.net http://camera.org http://americancensorship.org https://jihadwatch.org http://iris.org.il "Bravery is being the only one who knows you're afraid." --Franklin P. Jones |