diff options
Diffstat (limited to 'Firestore/core/src/firebase')
-rw-r--r-- | Firestore/core/src/firebase/firestore/local/leveldb_transaction.cc | 2 | ||||
-rw-r--r-- | Firestore/core/src/firebase/firestore/model/transform_operations.h | 7 |
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_; |