From 4e4c20c387e29ca70a4917b195002805086f09bf Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Mon, 26 Aug 2019 09:06:13 +0200 Subject: [PATCH 1/2] Remember to unfold store map caches too! --- src/aeb_fate_maps.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/aeb_fate_maps.erl b/src/aeb_fate_maps.erl index 313a856..7c66758 100644 --- a/src/aeb_fate_maps.erl +++ b/src/aeb_fate_maps.erl @@ -95,7 +95,8 @@ allocate_store_maps_m(Used, Val, Maps) -> -type unfold_fun() :: fun((id()) -> aeb_fate_data:fate_map()). --spec unfold_store_maps(unfold_fun(), fate_value()) -> fate_value(). +-spec unfold_store_maps(unfold_fun(), fate_value_or_tombstone()) -> fate_value_or_tombstone(). +unfold_store_maps(_Unfold, ?FATE_MAP_TOMBSTONE = Val) -> Val; unfold_store_maps(_Unfold, ?FATE_TRUE = Val) -> Val; unfold_store_maps(_Unfold, ?FATE_FALSE = Val) -> Val; unfold_store_maps(_Unfold, ?FATE_UNIT = Val) -> Val; @@ -121,7 +122,8 @@ unfold_store_maps(Unfold, Val) when ?IS_FATE_MAP(Val) -> ?MAKE_FATE_MAP(unfold_store_maps_m(Unfold, ?FATE_MAP_VALUE(Val))); unfold_store_maps(Unfold, ?FATE_STORE_MAP(Cache, Id)) -> StoreMap = Unfold(Id), - maps:fold(fun write_cache/3, unfold_store_maps(Unfold, StoreMap), Cache). + maps:fold(fun write_cache/3, unfold_store_maps(Unfold, StoreMap), + unfold_store_maps_m(Unfold, Cache)). unfold_store_maps_l(Unfold, Vals) -> [ unfold_store_maps(Unfold, Val) || Val <- Vals ]. From c6475fe1c2bbc2acaf973f207f99f2dd472d534d Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Mon, 26 Aug 2019 11:57:21 +0200 Subject: [PATCH 2/2] Fix typo --- src/aeb_fate_maps.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/aeb_fate_maps.erl b/src/aeb_fate_maps.erl index 7c66758..2b62f81 100644 --- a/src/aeb_fate_maps.erl +++ b/src/aeb_fate_maps.erl @@ -76,8 +76,8 @@ allocate_store_maps(Used, ?FATE_STORE_MAP(Cache, _Id) = Val, Maps) when Cache =: {Used, Val, Maps}; allocate_store_maps(Used, ?FATE_STORE_MAP(Cache, Id), Maps) -> {NewId, Used1} = next_id(Used), - {Used1, Cache1, Maps1} = allocate_store_maps_m(Used1, Cache, Maps), - {Used1, ?FATE_STORE_MAP(#{}, NewId), Maps1#{NewId => ?FATE_STORE_MAP(Cache1, Id)}}. + {Used2, Cache1, Maps1} = allocate_store_maps_m(Used1, Cache, Maps), + {Used2, ?FATE_STORE_MAP(#{}, NewId), Maps1#{NewId => ?FATE_STORE_MAP(Cache1, Id)}}. allocate_store_maps_l(Used, [], Maps) -> {Used, [], Maps}; allocate_store_maps_l(Used, [H | T], Maps) ->