avoid UB in string compare

master
Daniel Kolesa 2016-08-17 18:18:12 +01:00
parent 7a11157f95
commit c7862243a8
1 changed files with 6 additions and 2 deletions

View File

@ -172,8 +172,12 @@ public:
/* non-range */
int compare(CharRangeBase<T const> s) const {
int ret = memcmp(data(), s.data(), ostd::min(size(), s.size()));
return ret ? ret : (size() - s.size());
ostd::Size s1 = size(), s2 = s.size();
if (!s1 || !s2) {
return s1 - s2;
}
int ret = memcmp(data(), s.data(), ostd::min(s1, s2));
return ret ? ret : (s1 - s2);
}
template<typename R>