diff options
Diffstat (limited to 'chromium/base/version.cc')
-rw-r--r-- | chromium/base/version.cc | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/chromium/base/version.cc b/chromium/base/version.cc index 6318b350edc..ede8a4586eb 100644 --- a/chromium/base/version.cc +++ b/chromium/base/version.cc @@ -23,7 +23,7 @@ namespace { // is the resulting integer vector. Function returns true if all numbers were // parsed successfully, false otherwise. bool ParseVersionNumbers(const std::string& version_str, - std::vector<uint16>* parsed) { + std::vector<uint32_t>* parsed) { std::vector<std::string> numbers; SplitString(version_str, '.', &numbers); if (numbers.empty()) @@ -31,22 +31,20 @@ bool ParseVersionNumbers(const std::string& version_str, for (std::vector<std::string>::const_iterator it = numbers.begin(); it != numbers.end(); ++it) { - int num; - if (!StringToInt(*it, &num)) + if (StartsWithASCII(*it, "+", false)) return false; - - if (num < 0) - return false; - - const uint16 max = 0xFFFF; - if (num > max) + unsigned int num; + if (!StringToUint(*it, &num)) return false; - // This throws out things like +3, or 032. - if (IntToString(num) != *it) + // This throws out leading zeros for the first item only. + if (it == numbers.begin() && UintToString(num) != *it) return false; - parsed->push_back(static_cast<uint16>(num)); + // StringToUint returns unsigned int but Version fields are uint32_t. + static_assert(sizeof (uint32_t) == sizeof (unsigned int), + "uint32_t must be same as unsigned int"); + parsed->push_back(num); } return true; } @@ -54,8 +52,8 @@ bool ParseVersionNumbers(const std::string& version_str, // Compares version components in |components1| with components in // |components2|. Returns -1, 0 or 1 if |components1| is less than, equal to, // or greater than |components2|, respectively. -int CompareVersionComponents(const std::vector<uint16>& components1, - const std::vector<uint16>& components2) { +int CompareVersionComponents(const std::vector<uint32_t>& components1, + const std::vector<uint32_t>& components2) { const size_t count = std::min(components1.size(), components2.size()); for (size_t i = 0; i < count; ++i) { if (components1[i] > components2[i]) @@ -86,7 +84,7 @@ Version::~Version() { } Version::Version(const std::string& version_str) { - std::vector<uint16> parsed; + std::vector<uint32_t> parsed; if (!ParseVersionNumbers(version_str, &parsed)) return; @@ -125,7 +123,7 @@ int Version::CompareToWildcardString(const std::string& wildcard_string) const { return CompareTo(version); } - std::vector<uint16> parsed; + std::vector<uint32_t> parsed; const bool success = ParseVersionNumbers( wildcard_string.substr(0, wildcard_string.length() - 2), &parsed); DCHECK(success); |