actually safe string cmp

This commit is contained in:
q66 2016-08-18 00:34:20 +01:00
parent c7862243a8
commit 17365642ef

View file

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