From 848a7a6b6e1cd7ca74acd26da5636a5e9e460c53 Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Wed, 11 Aug 2010 17:37:41 +1000 Subject: [PATCH 1/5] Changing makefile to use CC variable rather than gcc hard coded --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 5f89db2..65425b4 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. +CC = gcc CFLAGS = `pkg-config lua5.1 --cflags` -fPIC -O3 -Wall LFLAGS = -shared `pkg-config --libs --cflags libzmq` INSTALL_PATH = `pkg-config lua5.1 --variable=INSTALL_CMOD` @@ -27,11 +28,11 @@ all: zmq.so zmq.lo: zmq.c - gcc -o zmq.lo -c $(CFLAGS) zmq.c + $(CC) -o zmq.lo -c $(CFLAGS) zmq.c zmq.so: zmq.lo - gcc -o zmq.so $(LFLAGS) zmq.lo + $(CC) -o zmq.so $(LFLAGS) zmq.lo install: zmq.so From cc82423bacda542f007f33c13ed53f23f0323c94 Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Wed, 11 Aug 2010 17:38:20 +1000 Subject: [PATCH 2/5] Adding support for zmq 2.0.7 with a hacky preprocessor check --- zmq.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zmq.c b/zmq.c index b9b3f06..88d78ae 100644 --- a/zmq.c +++ b/zmq.c @@ -345,8 +345,14 @@ LUALIB_API int luaopen_zmq(lua_State *L) set_zmq_const(REP); set_zmq_const(XREQ); set_zmq_const(XREP); + +#if defined(ZMQ_PULL) && defined(ZMQ_PUSH) set_zmq_const(PULL); set_zmq_const(PUSH); +#else + set_zmq_const(UPSTREAM); + set_zmq_const(DOWNSTREAM); +#endif set_zmq_const(HWM); set_zmq_const(SWAP); From 8354367da71fd550ffd5390dd2f32245cabdb70b Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Wed, 11 Aug 2010 17:41:07 +1000 Subject: [PATCH 3/5] Adding gitignore for binaries --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e3f24e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.lo +*.so From d2dd6d05f63674373f45f0f065f0d9adf2b6fb08 Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Wed, 11 Aug 2010 17:42:22 +1000 Subject: [PATCH 4/5] Adding __gc metamethod to context --- zmq.c | 1 + 1 file changed, 1 insertion(+) diff --git a/zmq.c b/zmq.c index 88d78ae..3532c40 100644 --- a/zmq.c +++ b/zmq.c @@ -304,6 +304,7 @@ static const luaL_reg zmqlib[] = { }; static const luaL_reg ctxmethods[] = { + {"__gc", Lzmq_term}, {"term", Lzmq_term}, {"socket", Lzmq_socket}, {NULL, NULL} From f6dfd37febceea60b33d29f6bd18c3893fefc535 Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Wed, 11 Aug 2010 23:04:32 +1000 Subject: [PATCH 5/5] Work on object collection Adding __gc for socket objecs Adding NULL pointer check to context:term and socket:close --- zmq.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/zmq.c b/zmq.c index 3532c40..a9a8175 100644 --- a/zmq.c +++ b/zmq.c @@ -77,7 +77,12 @@ static int Lzmq_init(lua_State *L) static int Lzmq_term(lua_State *L) { zmq_ptr *ctx = luaL_checkudata(L, 1, MT_ZMQ_CONTEXT); - assert(zmq_term(ctx->ptr) == 0); + + if(ctx->ptr != NULL) { + assert(zmq_term(ctx->ptr) == 0); + ctx->ptr = NULL; + } + return 0; } @@ -103,7 +108,12 @@ static int Lzmq_socket(lua_State *L) static int Lzmq_close(lua_State *L) { zmq_ptr *s = luaL_checkudata(L, 1, MT_ZMQ_SOCKET); - assert(zmq_close(s->ptr) == 0); + + if(s->ptr != NULL) { + assert(zmq_close(s->ptr) == 0); + s->ptr = NULL; + } + return 0; } @@ -311,6 +321,7 @@ static const luaL_reg ctxmethods[] = { }; static const luaL_reg sockmethods[] = { + {"__gc", Lzmq_close}, {"close", Lzmq_close}, {"setopt", Lzmq_setsockopt}, {"getopt", Lzmq_getsockopt},