diff options
author | Leif Åstrand <leif@vaadin.com> | 2013-05-17 16:14:27 +0300 |
---|---|---|
committer | Leif Åstrand <leif@vaadin.com> | 2013-05-17 16:14:27 +0300 |
commit | 73a50dbf002b381411a7c6ca1d6b4e59a93bbe0c (patch) | |
tree | 49dfcde7194cf82cc3e96519170decaf12051992 /server/src/com/vaadin/data/util | |
parent | 5a9303869ce6912afcb158f6b75b3202d77a40a1 (diff) | |
parent | 0c8edf1ff0502070d92dc6d8ef5af304d7570934 (diff) | |
download | vaadin-framework-73a50dbf002b381411a7c6ca1d6b4e59a93bbe0c.tar.gz vaadin-framework-73a50dbf002b381411a7c6ca1d6b4e59a93bbe0c.zip |
Merge changes from origin/7.0
1a6200e Merge #6880 test from 6.8; fix itself is not needed in Vaadin 7
67696f3 SQLContainer.indexOfId() also searches backwards (#11849, #10376)
611e5f9 Test for #11267 adapted from 6.8.
609acd1 Fixed table height rendering in Android 2.3 #11331
63dd611 Centers VOverlays in visual viewport on iOS, Android, fixes #11614
5a33d7d Test for #11775
0c8edf1 Avoid marking AbstractField dirty in primitive getters (#11201)
Change-Id: I7437e0b249c1a95372d6f349e9d6336fb85f08a4
Diffstat (limited to 'server/src/com/vaadin/data/util')
-rw-r--r-- | server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java b/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java index 987466cdb7..e9a1a2d98f 100644 --- a/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java +++ b/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java @@ -648,23 +648,25 @@ public class SQLContainer implements Container, Container.Filterable, getPage(); } int size = size(); - boolean wrappedAround = false; - while (!wrappedAround) { + // this protects against infinite looping + int counter = 0; + while (counter < size) { for (Integer i : itemIndexes.keySet()) { if (itemIndexes.get(i).equals(itemId)) { return i; } + counter++; } // load in the next page. int nextIndex = (currentOffset / (pageLength * CACHE_RATIO) + 1) * (pageLength * CACHE_RATIO); if (nextIndex >= size) { // Container wrapped around, start from index 0. - wrappedAround = true; nextIndex = 0; } updateOffsetAndCache(nextIndex); } + // safeguard in case item not found return -1; } |