diff options
Diffstat (limited to 'erts/emulator/beam/erl_bif_persistent.c')
-rw-r--r-- | erts/emulator/beam/erl_bif_persistent.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_bif_persistent.c b/erts/emulator/beam/erl_bif_persistent.c index 91cc03fe57..596604cdec 100644 --- a/erts/emulator/beam/erl_bif_persistent.c +++ b/erts/emulator/beam/erl_bif_persistent.c @@ -439,7 +439,7 @@ BIF_RETTYPE persistent_term_put_2(BIF_ALIST_2) BIF_RETTYPE persistent_term_get_0(BIF_ALIST_0) { - HashTable* hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table); + HashTable* hash_table; TrapData* trap_data; Eterm res = NIL; Eterm magic_ref; @@ -450,6 +450,8 @@ BIF_RETTYPE persistent_term_get_0(BIF_ALIST_0) ERTS_BIF_YIELD0(&bif_trap_export[BIF_persistent_term_get_0], BIF_P); } + hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table); + magic_ref = alloc_trap_data(BIF_P); mbp = erts_magic_ref2bin(magic_ref); trap_data = ERTS_MAGIC_BIN_DATA(mbp); @@ -673,7 +675,7 @@ BIF_RETTYPE erts_internal_erase_persistent_terms_0(BIF_ALIST_0) BIF_RETTYPE persistent_term_info_0(BIF_ALIST_0) { - HashTable* hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table); + HashTable* hash_table; TrapData* trap_data; Eterm res = NIL; Eterm magic_ref; @@ -684,6 +686,8 @@ BIF_RETTYPE persistent_term_info_0(BIF_ALIST_0) ERTS_BIF_YIELD0(&bif_trap_export[BIF_persistent_term_info_0], BIF_P); } + hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table); + magic_ref = alloc_trap_data(BIF_P); mbp = erts_magic_ref2bin(magic_ref); trap_data = ERTS_MAGIC_BIN_DATA(mbp); |