- PHYSFS_file* file = (PHYSFS_file*) PHYSFS_openRead(filename.c_str());
- if(!file) {
- std::stringstream msg;
- msg << "Couldn't open '" << filename << "': "
- << PHYSFS_getLastError();
- throw std::runtime_error(msg.str());
- }
-
- SDL_RWops* ops = new SDL_RWops();
- ops->type = 0;
- ops->hidden.unknown.data1 = file;
- ops->seek = funcSeek;
- ops->read = funcRead;
- ops->write = 0;
- ops->close = funcClose;
- return ops;
+ // check this as PHYSFS seems to be buggy and still returns a
+ // valid pointer in this case
+ if(filename == "") {
+ throw std::runtime_error("Couldn't open file: empty filename");
+ }
+
+ PHYSFS_file* file = (PHYSFS_file*) PHYSFS_openRead(filename.c_str());
+ if(!file) {
+ std::stringstream msg;
+ msg << "Couldn't open '" << filename << "': "
+ << PHYSFS_getLastError();
+ throw std::runtime_error(msg.str());
+ }
+
+ SDL_RWops* ops = new SDL_RWops();
+ ops->type = 0;
+ ops->hidden.unknown.data1 = file;
+ ops->seek = funcSeek;
+ ops->read = funcRead;
+ ops->write = 0;
+ ops->close = funcClose;
+ return ops;