From 028108ea6438484374e4a79dec2df275d474c4eb Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Wed, 6 Aug 2014 20:16:15 -0300 Subject: [PATCH] Improved the error message when physfs fails to open a filepath. --- src/modules/filesystem/physfs/File.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/modules/filesystem/physfs/File.cpp b/src/modules/filesystem/physfs/File.cpp index 95eafa800..be137c4b0 100644 --- a/src/modules/filesystem/physfs/File.cpp +++ b/src/modules/filesystem/physfs/File.cpp @@ -69,23 +69,36 @@ bool File::open(Mode mode) if (file != 0) return false; - this->mode = mode; + PHYSFS_getLastError(); // Clear the error buffer. + PHYSFS_File *handle = nullptr; switch (mode) { case READ: - file = PHYSFS_openRead(filename.c_str()); + handle = PHYSFS_openRead(filename.c_str()); break; case APPEND: - file = PHYSFS_openAppend(filename.c_str()); + handle = PHYSFS_openAppend(filename.c_str()); break; case WRITE: - file = PHYSFS_openWrite(filename.c_str()); + handle = PHYSFS_openWrite(filename.c_str()); break; default: break; } + if (handle == nullptr) + { + const char *err = PHYSFS_getLastError(); + if (err == nullptr) + err = "unknown error"; + throw love::Exception("Could not open file %s (%s)", filename.c_str(), err); + } + + file = handle; + + this->mode = mode; + if (file != 0 && !setBuffer(bufferMode, bufferSize)) { // Revert to buffer defaults if we don't successfully set the buffer.