diff options
-rw-r--r-- | common/fs.cpp | 6 | ||||
-rw-r--r-- | common/fs.h | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/common/fs.cpp b/common/fs.cpp index d8f065b449..f7edf41711 100644 --- a/common/fs.cpp +++ b/common/fs.cpp @@ -62,10 +62,10 @@ bool FilesystemNode::exists() const { } FilesystemNode FilesystemNode::getChild(const Common::String &n) const { - if (_realNode == 0) - return *this; + // If this node is invalid or not a directory, return an invalid node + if (_realNode == 0 || !_realNode->isDirectory()) + return FilesystemNode(); - assert(_realNode->isDirectory()); AbstractFilesystemNode *node = _realNode->getChild(n); return FilesystemNode(node); } diff --git a/common/fs.h b/common/fs.h index 9163dbadce..b19abd0a80 100644 --- a/common/fs.h +++ b/common/fs.h @@ -103,7 +103,7 @@ public: /** * Create a new node referring to a child node of the current node, which - * must be a directory node (an assertion is triggered otherwise). + * must be a directory node (otherwise an invalid node is returned). * If a child matching the name exists, a normal node for it is returned. * If no child with the name exists, a node for it is still returned, * but exists() will return 'false' for it. This node can however be used |