diff --git a/src/modules/filesystem/physfs/Filesystem.cpp b/src/modules/filesystem/physfs/Filesystem.cpp index 03845890c..133f2d193 100644 --- a/src/modules/filesystem/physfs/Filesystem.cpp +++ b/src/modules/filesystem/physfs/Filesystem.cpp @@ -142,6 +142,8 @@ namespace physfs File * Filesystem::newFile(const char *filename) { + if (!PHYSFS_exists(filename)) + throw Exception("File %s doesn't exist", filename); return new File(filename); } diff --git a/src/modules/filesystem/physfs/wrap_Filesystem.cpp b/src/modules/filesystem/physfs/wrap_Filesystem.cpp index a61cb9240..1d41e57c1 100644 --- a/src/modules/filesystem/physfs/wrap_Filesystem.cpp +++ b/src/modules/filesystem/physfs/wrap_Filesystem.cpp @@ -75,7 +75,15 @@ namespace physfs int w_newFile(lua_State * L) { const char * filename = luaL_checkstring(L, 1); - File * t = instance->newFile(filename); + File * t; + try + { + t = instance->newFile(filename); + } + catch(Exception e) + { + return luaL_error(L, e.what()); + } luax_newtype(L, "File", FILESYSTEM_FILE_T, (void*)t); return 1; } @@ -274,4 +282,4 @@ namespace physfs } // physfs } // filesystem -} // love \ No newline at end of file +} // love