Index: trunk/src/content/browser/indexed_db/indexed_db_cursor.cc |
=================================================================== |
--- trunk/src/content/browser/indexed_db/indexed_db_cursor.cc (revision 243358) |
+++ trunk/src/content/browser/indexed_db/indexed_db_cursor.cc (working copy) |
@@ -108,7 +108,8 @@ |
std::vector<IndexedDBKey> found_primary_keys; |
std::vector<std::string> found_values; |
- saved_cursor_.reset(); |
+ if (cursor_) |
+ saved_cursor_.reset(cursor_->Clone()); |
const size_t max_size_estimate = 10 * 1024 * 1024; |
size_t size_estimate = 0; |
@@ -118,12 +119,6 @@ |
break; |
} |
- if (i == 0) { |
- // First prefetched result is always used, so that's the position |
- // a cursor should be reset to if the prefetch is invalidated. |
- saved_cursor_.reset(cursor_->Clone()); |
- } |
- |
found_keys.push_back(cursor_->key()); |
found_primary_keys.push_back(cursor_->primary_key()); |
@@ -157,8 +152,7 @@ |
found_keys, found_primary_keys, found_values); |
} |
-void IndexedDBCursor::PrefetchReset(int used_prefetches, |
- int /* unused_prefetches */) { |
+void IndexedDBCursor::PrefetchReset(int used_prefetches, int) { |
IDB_TRACE("IndexedDBCursor::PrefetchReset"); |
cursor_.swap(saved_cursor_); |
saved_cursor_.reset(); |
@@ -166,9 +160,7 @@ |
if (closed_) |
return; |
if (cursor_) { |
- // First prefetched result is always used. |
- DCHECK_GT(used_prefetches, 0); |
- for (int i = 0; i < used_prefetches - 1; ++i) { |
+ for (int i = 0; i < used_prefetches; ++i) { |
bool ok = cursor_->Continue(); |
DCHECK(ok); |
} |