From 475e7a147676a4e7a9d255ddc7969dd35ea22882 Mon Sep 17 00:00:00 2001
From: PG Herveou <pgherveou@gmail.com>
Date: Wed, 6 Mar 2024 07:47:33 +0100
Subject: [PATCH] Contracts: Charge min amount when processing deletion queue
 (#2934)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Alexander Theißen <alex.theissen@me.com>
---
 substrate/frame/contracts/src/storage.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/substrate/frame/contracts/src/storage.rs b/substrate/frame/contracts/src/storage.rs
index 3304166607d..52c5150ca21 100644
--- a/substrate/frame/contracts/src/storage.rs
+++ b/substrate/frame/contracts/src/storage.rs
@@ -322,7 +322,8 @@ impl<T: Config> ContractInfo<T> {
 				KillStorageResult::SomeRemaining(_) => return weight_limit,
 				KillStorageResult::AllRemoved(keys_removed) => {
 					entry.remove();
-					remaining_key_budget = remaining_key_budget.saturating_sub(keys_removed);
+					// charge at least one key even if none were removed.
+					remaining_key_budget = remaining_key_budget.saturating_sub(keys_removed.max(1));
 				},
 			};
 		}
-- 
GitLab