http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54561
Matthieu Patou <mat at matws dot net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mat at matws dot net --- Comment #3 from Matthieu Patou <mat at matws dot net> --- I have more issues with Gcc generating wrong warning. When trying to compile new dissectors with gcc 4.8.8 in wireshark I got: /home/mat/workspace/wireshark/epan/dissectors/packet-dcerpc-dnsserver.c: In function ‘dnsserver_dissect_struct_DNS_RPC_NAME_LIST’: /home/mat/workspace/wireshark/epan/dissectors/packet-dcerpc-dnsserver.c:1902:23: warning: variable ‘tmptree’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered] volatile proto_tree *tmptree = NULL; /home/mat/workspace/wireshark/epan/dissectors/packet-dcerpc-dnsserver.c:1903:23: warning: variable ‘tmpitem’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered] volatile proto_item *tmpitem = NULL; The manpage of longjmp states that "The values of automatic variables are unspecified after a call to longjmp() if they meet all the following criteria: · they are local to the function that made the corresponding setjmp(3) call; · their values are changed between the calls to setjmp(3) and longjmp(); and · they are not declared as volatile." So without the volatile keyword the warning would valid but I explicitly specified volatile to avoid this warning, unless I mis-understood something I think this warning shouldn't be emitted.