From: Vladimír Čunát Date: Mon, 15 Apr 2019 11:50:51 +0000 (+0200) Subject: daemon/bindings: add lua_pushpointer() X-Git-Tag: v4.0.0~4^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e9535ffbc830332a0c06b34f11c813eeca715bf;p=thirdparty%2Fknot-resolver.git daemon/bindings: add lua_pushpointer() Originally it's from another branch. --- diff --git a/daemon/bindings/impl.h b/daemon/bindings/impl.h index af54ddc0b..c4d06c84b 100644 --- a/daemon/bindings/impl.h +++ b/daemon/bindings/impl.h @@ -102,3 +102,15 @@ static inline int execute_callback(lua_State *L, int argc) return ret; } +/** Push a pointer as heavy/full userdata. + * + * It's useful as a replacement of lua_pushlightuserdata(), + * but note that it behaves differently in lua (converts to pointer-to-pointer). + */ +static inline void lua_pushpointer(lua_State *L, void *p) +{ + void *addr = lua_newuserdata(L, sizeof(void *)); + assert(addr); + memcpy(addr, &p, sizeof(void *)); +} +