]> git.lyx.org Git - features.git/commitdiff
* undeflow fix for i == -1
authorStefan Schimanski <sts@lyx.org>
Tue, 26 Feb 2008 13:46:54 +0000 (13:46 +0000)
committerStefan Schimanski <sts@lyx.org>
Tue, 26 Feb 2008 13:46:54 +0000 (13:46 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23249 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/GuiCompleter.cpp

index cd4cae74e24844461193d612dfb95bea02436ba3..95bbfbe0418a115aea018635d0aa397ce1c97ff6 100644 (file)
@@ -613,10 +613,10 @@ void GuiCompleter::setCurrentCompletion(QString const & s)
                }
        } else {
                // In sorted models, do binary search for s.
-               i = 0;
-               size_t r = n - 1;
-               while (r >= i && i < n) {
-                       size_t mid = (r + i) / 2;
+               int l = 0;
+               int r = n - 1;
+               while (r >= l && l < int(n)) {
+                       size_t mid = (r + l) / 2;
                        QString const & mids
                        = model.data(model.index(mid, 0),
                                     Qt::EditRole).toString();
@@ -626,22 +626,25 @@ void GuiCompleter::setCurrentCompletion(QString const & s)
                        // from the CompletionList has?
                        int c = s.compare(mids, Qt::CaseSensitive);
                        if (c == 0) {
-                               i = mid;
+                               l = mid;
                                break;
-                       } else if (i == r) {
-                               i = n;
+                       } else if (l == r) {
+                               l = n;
                                break;
                        } else if (c > 0)
                                // middle is not far enough
-                               i = mid + 1;
+                               l = mid + 1;
                        else
                                // middle is too far
                                r = mid - 1;
                }
 
                // loop was left without finding anything
-               if (r < i)
+               if (r < l)
                        i = n;
+               else
+                       i = l;
+               BOOST_ASSERT(0 <= i && i <= n);
        }
 
        // select the first if none was found