diff options
Diffstat (limited to 'dep/CascLib/src/CascOpenStorage.cpp')
-rw-r--r-- | dep/CascLib/src/CascOpenStorage.cpp | 17 |
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; |