summaryrefslogtreecommitdiff
path: root/src/lib/eet/eet_dictionary.c
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2022-01-04 09:44:20 +0000
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2022-01-04 09:44:20 +0000
commit34a36b49e1dae0ddf874d008410fc9e7d0186928 (patch)
treee252ada9624295e7551b6a9eed74d3541fbbcdee /src/lib/eet/eet_dictionary.c
parent29029bc7810e90b078b7fb54dec9ac75af1bf3f9 (diff)
downloadefl-34a36b49e1dae0ddf874d008410fc9e7d0186928.tar.gz
eet - fix seg when doing unusual things with eet write then read
if you write and read0-back before writign out (non-sensical to do as you would write out in full and close and then open file and read separately) the dictionary will be empty. fill it in these paths. fixes needed resulting from optimizations in 1.26.0 @fix
Diffstat (limited to 'src/lib/eet/eet_dictionary.c')
-rw-r--r--src/lib/eet/eet_dictionary.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lib/eet/eet_dictionary.c b/src/lib/eet/eet_dictionary.c
index ea54b118ad..4413a6d690 100644
--- a/src/lib/eet/eet_dictionary.c
+++ b/src/lib/eet/eet_dictionary.c
@@ -95,14 +95,9 @@ on_error:
}
void
-eet_dictionary_write_prepare(Eet_Dictionary *ed)
+eet_dictionary_write_prepare_unlocked(Eet_Dictionary *ed)
{
- eina_rwlock_take_write(&ed->rwlock);
- if (!ed->add_hash)
- {
- eina_rwlock_release(&ed->rwlock);
- return;
- }
+ if (!ed->add_hash) return;
ed->total = ed->count;
@@ -113,6 +108,13 @@ eet_dictionary_write_prepare(Eet_Dictionary *ed)
eina_hash_foreach(ed->add_hash, _eet_dictionary_write_prepare_hash_cb, ed);
eina_hash_free(ed->add_hash);
ed->add_hash = NULL;
+}
+
+void
+eet_dictionary_write_prepare(Eet_Dictionary *ed)
+{
+ eina_rwlock_take_write(&ed->rwlock);
+ eet_dictionary_write_prepare_unlocked(ed);
eina_rwlock_release(&ed->rwlock);
}