diff --git a/src/proto/alpha/roll_storage.ml b/src/proto/alpha/roll_storage.ml index 171aa5840..5a3c3439d 100644 --- a/src/proto/alpha/roll_storage.ml +++ b/src/proto/alpha/roll_storage.ml @@ -188,12 +188,15 @@ module Contract = struct Storage.Roll.Contract_change.get c contract >>=? fun change -> loop c change >>=? fun (c, change) -> Lwt.return Tez_repr.(change -? amount) >>=? fun change -> - Storage.Roll.Contract_change.set c contract change + if Tez_repr.(change = zero) then + Storage.Roll.Contract_change.delete c contract + else + Storage.Roll.Contract_change.set c contract change let assert_empty c contract = - Storage.Roll.Contract_change.get c contract >>=? fun change -> + Storage.Roll.Contract_change.mem c contract >>= fun change -> Storage.Roll.Contract_roll_list.get c contract >>=? fun roll_list -> - fail_unless (Tez_repr.(change = zero) && + fail_unless (not change && match roll_list with None -> true | Some _ -> false) Deleted_contract_owning_rolls