summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/command_divelist.cpp1
-rw-r--r--core/divelist.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/commands/command_divelist.cpp b/commands/command_divelist.cpp
index 8f6189c1e..fe59ecb6c 100644
--- a/commands/command_divelist.cpp
+++ b/commands/command_divelist.cpp
@@ -73,6 +73,7 @@ dive *DiveListBase::addDive(DiveToAdd &d)
res->hidden_by_filter = true;
int idx = dive_table_get_insertion_index(&dive_table, res);
+ fulltext_register(res); // Register the dive's fulltext cache
add_to_dive_table(&dive_table, idx, res); // Return ownership to backend
invalidate_dive_cache(res); // Ensure that dive is written in git_save()
diff --git a/core/divelist.c b/core/divelist.c
index 750eb42db..994170570 100644
--- a/core/divelist.c
+++ b/core/divelist.c
@@ -753,6 +753,9 @@ struct dive *unregister_dive(int idx)
struct dive *dive = get_dive(idx);
if (!dive)
return NULL; /* this should never happen */
+ /* When removing a dive from the global dive table,
+ * we also have to unregister its fulltext cache. */
+ fulltext_unregister(dive);
remove_from_dive_table(&dive_table, idx);
if (dive->selected)
amount_selected--;