From 21be73a478f5409a13f10d56041af32c78709bbd Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Sat, 11 Jul 2009 07:01:32 +0000 Subject: [PATCH] nixio: Fix accidental closing of file descriptors after dup with two parameters resulting in strange behaviour when spawning processes --- libs/nixio/src/file.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libs/nixio/src/file.c b/libs/nixio/src/file.c index 482752522..70c717e4e 100644 --- a/libs/nixio/src/file.c +++ b/libs/nixio/src/file.c @@ -123,14 +123,18 @@ static int nixio_dup(lua_State *L) { if (stat == -1) { return nixio__perror(L); } else { - int *udata = lua_newuserdata(L, sizeof(int)); - if (!udata) { - return luaL_error(L, "out of memory"); - } + if (newfd == -1) { + int *udata = lua_newuserdata(L, sizeof(int)); + if (!udata) { + return luaL_error(L, "out of memory"); + } - *udata = stat; - luaL_getmetatable(L, NIXIO_FILE_META); - lua_setmetatable(L, -2); + *udata = stat; + luaL_getmetatable(L, NIXIO_FILE_META); + lua_setmetatable(L, -2); + } else { + lua_pushvalue(L, 2); + } return 1; } } -- 2.25.1