Mercurial > hg > octave-terminal
changeset 12669:2c96207d0e06 stable
caseless-str.h: Fix implementation of op<
author | Jordi Gutiérrez Hermoso <jordigh@gmail.com> |
---|---|
date | Sat, 14 May 2011 23:48:09 -0500 |
parents | e3dc23f7dd54 |
children | f83ec5ab90ad |
files | liboctave/caseless-str.h |
diffstat | 1 files changed, 10 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/caseless-str.h +++ b/liboctave/caseless-str.h @@ -48,22 +48,23 @@ bool operator < (const std::string& s) const { - bool same = true; const_iterator p1 = begin (); const_iterator p2 = s.begin (); while (p1 != end () && p2 != s.end ()) { - if (std::tolower (*p2) < std::tolower (*p1)) + char lp1 = std::tolower (*p1), lp2 = std::tolower (*p2); + + if ( lp1 > lp2 ) return false; - if (same && (std::tolower (*p2) != std::tolower (*p1))) - same = false; + if ( lp1 < lp2) + return true; - *p1++; - *p2++; + p1++; + p2++; } - if (same && (length() >= s.length ())) + if ( length () >= s.length ()) return false; else return true; @@ -82,8 +83,8 @@ if (std::tolower (*p1) != std::tolower (*p2)) return false; - *p1++; - *p2++; + p1++; + p2++; } return (limit == std::string::npos) ? size () == s.size () : k == limit;