summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-04-08 12:56:31 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2021-04-08 12:56:31 +0200
commitc8a547630bfdf116c7aca7ea1ad40bb6782c8cdf (patch)
tree797abf85751f9a0eb95510bfcb3ddc1477508f02 /src/Cache.cpp
parentFix small leak in TrayIcon (diff)
downloadnheko-c8a547630bfdf116c7aca7ea1ad40bb6782c8cdf.tar.xz
Fix a weird edge case with persisted empty event ids
No idea, how that happened and where it came from
Diffstat (limited to '')
-rw-r--r--src/Cache.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index 4423b21f..f3407e48 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -2867,15 +2867,18 @@ Cache::clearTimeline(const std::string &room_id) if (passed_pagination_token) { if (obj.count("event_id") != 0) { std::string event_id = obj["event_id"].get<std::string>(); - evToOrderDb.del(txn, event_id); - eventsDb.del(txn, event_id); - relationsDb.del(txn, event_id); - std::string_view order{}; - bool exists = msg2orderDb.get(txn, event_id, order); - if (exists) { - order2msgDb.del(txn, order); - msg2orderDb.del(txn, event_id); + if (!event_id.empty()) { + evToOrderDb.del(txn, event_id); + eventsDb.del(txn, event_id); + relationsDb.del(txn, event_id); + + std::string_view order{}; + bool exists = msg2orderDb.get(txn, event_id, order); + if (exists) { + order2msgDb.del(txn, order); + msg2orderDb.del(txn, event_id); + } } } lmdb::cursor_del(cursor);