X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fnixio%2Fsrc%2Ffile.c;fp=libs%2Fnixio%2Fsrc%2Ffile.c;h=70c717e4e17e62ca8bcce6899ecf0d012d724a09;hp=482752522737682cbad8e83203b605fd83446ff8;hb=21be73a478f5409a13f10d56041af32c78709bbd;hpb=a29c4ce658fbdcc1d507646b14b22de0cf4890fc diff --git a/libs/nixio/src/file.c b/libs/nixio/src/file.c index 4827525227..70c717e4e1 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; } }