From 04ecc27e8ea99d8281218738be2f0991a9347e0a Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Mon, 4 Feb 2013 19:47:13 -0800 Subject: [PATCH] Fix a plFileSystem::CreateDir failure when called with a trailing slash and requesting the whole tree to be created. --- Sources/Plasma/CoreLib/plFileSystem.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Sources/Plasma/CoreLib/plFileSystem.cpp b/Sources/Plasma/CoreLib/plFileSystem.cpp index d791f959..4bce8884 100644 --- a/Sources/Plasma/CoreLib/plFileSystem.cpp +++ b/Sources/Plasma/CoreLib/plFileSystem.cpp @@ -333,19 +333,25 @@ bool plFileSystem::Copy(const plFileName &from, const plFileName &to) bool plFileSystem::CreateDir(const plFileName &dir, bool checkParents) { + plFileName fdir = dir; + if (fdir.GetFileName().IsEmpty()) { + hsDebugMessage("WARNING: CreateDir called with useless trailing slash", 0); + fdir = fdir.StripFileName(); + } + if (checkParents) { - plFileName parent = dir.StripFileName(); + plFileName parent = fdir.StripFileName(); if (parent.IsValid() && !plFileInfo(parent).Exists() && !CreateDir(parent, true)) return false; } - if (plFileInfo(dir).Exists()) + if (plFileInfo(fdir).Exists()) return true; #if HS_BUILD_FOR_WIN32 - return CreateDirectoryW(dir.AsString().ToWchar(), nullptr); + return CreateDirectoryW(fdir.AsString().ToWchar(), nullptr); #else - return (mkdir(dir.AsString().c_str(), 0755) == 0); + return (mkdir(fdir.AsString().c_str(), 0755) == 0); #endif }