diff --git a/src/modules/filesystem/wrap_Filesystem.cpp b/src/modules/filesystem/wrap_Filesystem.cpp index 93cea1180..61f365c59 100644 --- a/src/modules/filesystem/wrap_Filesystem.cpp +++ b/src/modules/filesystem/wrap_Filesystem.cpp @@ -214,7 +214,10 @@ File *luax_getfile(lua_State *L, int idx) file = instance()->newFile(filename); } else + { file = luax_checkfile(L, idx); + file->retain(); + } return file; } @@ -227,7 +230,6 @@ FileData *luax_getfiledata(lua_State *L, int idx) if (lua_isstring(L, idx) || luax_istype(L, idx, File::type)) { file = luax_getfile(L, idx); - file->retain(); } else if (luax_istype(L, idx, FileData::type)) { @@ -260,7 +262,6 @@ Data *luax_getdata(lua_State *L, int idx) if (lua_isstring(L, idx) || luax_istype(L, idx, File::type)) { file = luax_getfile(L, idx); - file->retain(); } else if (luax_istype(L, idx, Data::type)) { diff --git a/src/modules/video/wrap_Video.cpp b/src/modules/video/wrap_Video.cpp index c12b64874..61466e610 100644 --- a/src/modules/video/wrap_Video.cpp +++ b/src/modules/video/wrap_Video.cpp @@ -47,6 +47,7 @@ int w_newVideoStream(lua_State *L) luax_pushtype(L, stream); stream->release(); + file->release(); return 1; }