aboutsummaryrefslogtreecommitdiff
path: root/dep/CascLib/src/CascOpenStorage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dep/CascLib/src/CascOpenStorage.cpp')
-rw-r--r--dep/CascLib/src/CascOpenStorage.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/dep/CascLib/src/CascOpenStorage.cpp b/dep/CascLib/src/CascOpenStorage.cpp
index 4883e83283e..398dfb62960 100644
--- a/dep/CascLib/src/CascOpenStorage.cpp
+++ b/dep/CascLib/src/CascOpenStorage.cpp
@@ -166,13 +166,26 @@ static bool CutLastPathPart(TCHAR * szWorkPath)
{
size_t nLength = _tcslen(szWorkPath);
- for(nLength = _tcslen(szWorkPath); nLength > 0; nLength--)
+ // Go one character back
+ if(nLength > 0)
+ nLength--;
+
+ // Cut ending (back)slashes, if any
+ while(nLength > 0 && (szWorkPath[nLength] == _T('\\') || szWorkPath[nLength] == _T('/')))
+ nLength--;
+
+ // Cut the last path part
+ while(nLength > 0)
{
- if(szWorkPath[nLength] == '\\' || szWorkPath[nLength] == '/')
+ // End of path?
+ if(szWorkPath[nLength] == _T('\\') || szWorkPath[nLength] == _T('/'))
{
szWorkPath[nLength] = 0;
return true;
}
+
+ // Go one character back
+ nLength--;
}
return false;