Fix trim() in lib/Preprocessor.cpp
Currently, if its argument is all spaces and tabs, trim() returns it without actually trimming it. Fix this by returning an empty string in this case. Also, drop a useless test: if we did not return "" then beg is not equal to std::string::npos, and in that case, neither is end.
This commit is contained in:
parent
1db9cf4d09
commit
df91caafa1
|
@ -2414,16 +2414,15 @@ static void skipstring(const std::string &line, std::string::size_type &pos)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove heading and trailing whitespaces from the input parameter.
|
* Remove heading and trailing whitespaces from the input parameter.
|
||||||
|
* If string is all spaces/tabs, return empty string.
|
||||||
* @param s The string to trim.
|
* @param s The string to trim.
|
||||||
*/
|
*/
|
||||||
static std::string trim(const std::string& s)
|
static std::string trim(const std::string& s)
|
||||||
{
|
{
|
||||||
const std::string::size_type beg = s.find_first_not_of(" \t");
|
const std::string::size_type beg = s.find_first_not_of(" \t");
|
||||||
if (beg == std::string::npos)
|
if (beg == std::string::npos)
|
||||||
return s;
|
return "";
|
||||||
const std::string::size_type end = s.find_last_not_of(" \t");
|
const std::string::size_type end = s.find_last_not_of(" \t");
|
||||||
if (end == std::string::npos)
|
|
||||||
return s.substr(beg);
|
|
||||||
return s.substr(beg, end - beg + 1);
|
return s.substr(beg, end - beg + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue