X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7124df9b59f2627c083b1fecaaa3e93c7088e3d0..0b5eceb638d6fc9cfa5326cd00b10028fc823187:/src/common/filename.cpp diff --git a/src/common/filename.cpp b/src/common/filename.cpp index ef07caccef..086598ef3b 100644 --- a/src/common/filename.cpp +++ b/src/common/filename.cpp @@ -249,7 +249,7 @@ bool wxFileName::Normalize(wxPathNormalize flags, { curDir.AssignDir(wxGetUserHome(dir.c_str() + 1)); - dirs.Remove(0u); + dirs.RemoveAt(0u); } } } @@ -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; @@ -535,9 +538,23 @@ void wxFileName::SplitPath(const wxString& fullpath, if ( pstrName ) { + // 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; + 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); }