From: Jeff Cohen Date: Sat, 9 Jul 2005 18:42:02 +0000 (+0000) Subject: 1. Fix bug in getBaseName where it mishandles suffixes X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=73f36671b23cd299550060e4167b52d1e22fd314;p=oota-llvm.git 1. Fix bug in getBaseName where it mishandles suffixes 2. Fix bug in eraseSuffix where it allows /path/.suffix to become /path/ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22362 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/System/Unix/Path.inc b/lib/System/Unix/Path.inc index 3f2e90e9d36..9d5e7fa9100 100644 --- a/lib/System/Unix/Path.inc +++ b/lib/System/Unix/Path.inc @@ -271,7 +271,11 @@ Path::getBasename() const { else slash++; - return path.substr(slash, path.rfind('.')); + size_t dot = path.rfind('.'); + if (dot == std::string::npos || dot < slash) + return path.substr(slash); + else + return path.substr(slash, dot - slash); } bool Path::hasMagicNumber(const std::string &Magic) const { @@ -521,7 +525,7 @@ Path::eraseSuffix() { size_t dotpos = path.rfind('.',path.size()); size_t slashpos = path.rfind('/',path.size()); if (dotpos != std::string::npos) { - if (slashpos == std::string::npos || dotpos > slashpos) { + if (slashpos == std::string::npos || dotpos > slashpos+1) { path.erase(dotpos, path.size()-dotpos); return true; }