From: Steven Barth Date: Sat, 11 Jul 2009 07:01:32 +0000 (+0000) Subject: nixio: Fix accidental closing of file descriptors after dup with two X-Git-Tag: 0.10.0~1378 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=21be73a478f5409a13f10d56041af32c78709bbd;p=oweals%2Fluci.git nixio: Fix accidental closing of file descriptors after dup with two parameters resulting in strange behaviour when spawning processes --- 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; } }