aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/core')
-rw-r--r--Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc2
-rw-r--r--Firestore/core/src/firebase/firestore/model/transform_operations.h7
2 files changed, 8 insertions, 1 deletions
diff --git a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc
index f998550..561d1e2 100644
--- a/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc
+++ b/Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc
@@ -123,7 +123,7 @@ void LevelDbTransaction::Iterator::AdvanceLDB() {
void LevelDbTransaction::Iterator::Next() {
FIREBASE_ASSERT_MESSAGE(Valid(), "Next() called on invalid iterator");
bool advanced = SyncToTransaction();
- if (!advanced) {
+ if (!advanced && is_valid_) {
if (is_mutation_) {
// A mutation might be shadowing leveldb. If so, advance both.
if (db_iter_->Valid() && db_iter_->key() == mutations_iter_->first) {
diff --git a/Firestore/core/src/firebase/firestore/model/transform_operations.h b/Firestore/core/src/firebase/firestore/model/transform_operations.h
index aad5a9b..2943ea0 100644
--- a/Firestore/core/src/firebase/firestore/model/transform_operations.h
+++ b/Firestore/core/src/firebase/firestore/model/transform_operations.h
@@ -151,6 +151,13 @@ class ArrayTransform : public TransformOperation {
}
#endif // defined(__OBJC__)
+ static const std::vector<FSTFieldValue*>& Elements(
+ const TransformOperation& op) {
+ FIREBASE_ASSERT(op.type() == Type::ArrayUnion ||
+ op.type() == Type::ArrayRemove);
+ return static_cast<const ArrayTransform&>(op).elements();
+ }
+
private:
Type type_;
std::vector<FSTFieldValue*> elements_;