]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: lua: silence some compiler warnings after WILL_LJMP
authorWilly Tarreau <w@1wt.eu>
Tue, 16 Oct 2018 15:57:36 +0000 (17:57 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 16 Oct 2018 15:57:36 +0000 (17:57 +0200)
These ones are on error paths that are properly handled by luaL_error()
which does a longjmp() but the compiler cannot know it. By adding an
__unreachable() statement in WILL_LJMP(), there is no ambiguity anymore.

This may be backported to 1.8 but these previous patches are needed first :
  - BUILD: compiler: add a new statement "__unreachable()"
  - MINOR: lua: all functions calling lua_yieldk() may return
  - BUILD: lua: silence some compiler warnings about potential null derefs (#2)

src/hlua.c

index f64a56477fb9573ef6c4900a9141badadabc2de0..451d6863af9331148f964ad8f4427e0345322eae 100644 (file)
@@ -25,6 +25,7 @@
 #include <ebpttree.h>
 
 #include <common/cfgparse.h>
+#include <common/compiler.h>
 #include <common/xref.h>
 #include <common/hathreads.h>
 
@@ -67,7 +68,7 @@
  *   MAY_LJMP() marks an lua function that may use longjmp.
  */
 #define __LJMP
-#define WILL_LJMP(func) func
+#define WILL_LJMP(func) do { func; __unreachable(); } while(0)
 #define MAY_LJMP(func) func
 
 /* This couple of function executes securely some Lua calls outside of