Fix always false condition and clean function body

An always false condition was remove from Normalize member function of
FilePath and the body of the function which was poorly writen is
improved.
This commit is contained in:
Hosein Ghahramanzadeh 2020-01-17 02:55:08 +03:30
parent 8b4817e3df
commit c09fbb2393

View File

@ -349,33 +349,19 @@ FilePath FilePath::RemoveTrailingPathSeparator() const {
// For example, "bar///foo" becomes "bar/foo". Does not eliminate other // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
// redundancies that might be in a pathname involving "." or "..". // redundancies that might be in a pathname involving "." or "..".
void FilePath::Normalize() { void FilePath::Normalize() {
if (pathname_.c_str() == nullptr) { std::string normalized_pathname;
pathname_ = ""; normalized_pathname.reserve(pathname_.length());
return;
}
const char* src = pathname_.c_str();
char* const dest = new char[pathname_.length() + 1];
char* dest_ptr = dest;
memset(dest_ptr, 0, pathname_.length() + 1);
while (*src != '\0') { for (const auto character : pathname_)
*dest_ptr = *src; if (!IsPathSeparator(character))
if (!IsPathSeparator(*src)) { normalized_pathname.push_back(character);
src++; else if (normalized_pathname.empty() ||
} else { normalized_pathname.back() != kPathSeparator)
#if GTEST_HAS_ALT_PATH_SEP_ normalized_pathname.push_back(kPathSeparator);
if (*dest_ptr == kAlternatePathSeparator) { else
*dest_ptr = kPathSeparator; continue;
}
#endif pathname_ = normalized_pathname;
while (IsPathSeparator(*src))
src++;
}
dest_ptr++;
}
*dest_ptr = '\0';
pathname_ = dest;
delete[] dest;
} }
} // namespace internal } // namespace internal