X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/42b1f941b010bee7e5e82b12c1096dce094553d4..0b5eceb638d6fc9cfa5326cd00b10028fc823187:/src/common/filename.cpp diff --git a/src/common/filename.cpp b/src/common/filename.cpp index 3bb8694534..086598ef3b 100644 --- a/src/common/filename.cpp +++ b/src/common/filename.cpp @@ -512,7 +512,10 @@ void wxFileName::SplitPath(const wxString& fullpath, } } - if ( (posLastDot != wxString::npos) && (posLastDot < posLastSlash) ) + // if we do have a dot and a slash, check that the dot is in the name part + if ( (posLastDot != wxString::npos) && + (posLastSlash != wxString::npos) && + (posLastDot < posLastSlash) ) { // the dot is part of the path, not the start of the extension posLastDot = wxString::npos; @@ -538,9 +541,20 @@ void wxFileName::SplitPath(const wxString& fullpath, // take all characters starting from the one after the last slash and // up to, but excluding, the last dot size_t nStart = posLastSlash == wxString::npos ? 0 : posLastSlash + 1; - size_t count = posLastDot == wxString::npos - ? wxString::npos - : posLastDot - posLastSlash - 1; + size_t count; + if ( posLastDot == wxString::npos ) + { + // take all until the end + count = wxString::npos; + } + else if ( posLastSlash == wxString::npos ) + { + count = posLastDot; + } + else // have both dot and slash + { + count = posLastDot - posLastSlash - 1; + } *pstrName = fullpath.Mid(nStart, count); }