summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tangara/database/database.cpp9
-rw-r--r--src/tangara/lua/lua_database.cpp4
2 files changed, 8 insertions, 5 deletions
diff --git a/src/tangara/database/database.cpp b/src/tangara/database/database.cpp
index 4064c3ed..f7cba610 100644
--- a/src/tangara/database/database.cpp
+++ b/src/tangara/database/database.cpp
@@ -704,9 +704,8 @@ Iterator::Iterator(std::shared_ptr<Database> db, const IndexKey::Header& header)
key_ = {
.prefix = {prefix.data(), prefix.size(), &memory::kSpiRamResource},
.key = {},
- .offset = 0,
+ .offset = -1,
};
- iterate(key_);
}
auto Iterator::value() const -> const std::optional<Record>& {
@@ -715,7 +714,11 @@ auto Iterator::value() const -> const std::optional<Record>& {
auto Iterator::next() -> void {
SearchKey new_key = key_;
- new_key.offset = 1;
+ if (new_key.offset == -1) {
+ new_key.offset = 0;
+ } else {
+ new_key.offset = 1;
+ }
iterate(new_key);
}
diff --git a/src/tangara/lua/lua_database.cpp b/src/tangara/lua/lua_database.cpp
index 1afb01f0..bf84a399 100644
--- a/src/tangara/lua/lua_database.cpp
+++ b/src/tangara/lua/lua_database.cpp
@@ -162,7 +162,7 @@ static auto push_iterator(lua_State* state,
static auto db_iterate_prev(lua_State* state) -> int {
database::Iterator* it = db_check_iterator(state, 1);
- std::optional<database::Record> res = (*it)--;
+ std::optional<database::Record> res = --(*it);
if (res) {
push_lua_record(state, *res);
@@ -175,7 +175,7 @@ static auto db_iterate_prev(lua_State* state) -> int {
static auto db_iterate(lua_State* state) -> int {
database::Iterator* it = db_check_iterator(state, 1);
- std::optional<database::Record> res = (*it)++;
+ std::optional<database::Record> res = ++(*it);
if (res) {
push_lua_record(state, *res);