Browse Source

Fixed PHYSFS_fileLength segfault on non-existant files by checking if a file exists when a file object is created

bart@bart 16 years ago
parent
commit
0aae22d523

+ 2 - 0
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);
 	}
 

+ 10 - 2
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
+} // love