From 9e90855c4d013c76fa7e9438f2358d99e888fdf2 Mon Sep 17 00:00:00 2001 From: duonglaiquang Date: Thu, 12 Mar 2026 11:19:13 +0900 Subject: [PATCH] Storage: fix storeSize calculation when overwriting existing key --- src/main/java/org/htmlunit/javascript/host/Storage.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/htmlunit/javascript/host/Storage.java b/src/main/java/org/htmlunit/javascript/host/Storage.java index 6fac8864d8..7077db25dc 100644 --- a/src/main/java/org/htmlunit/javascript/host/Storage.java +++ b/src/main/java/org/htmlunit/javascript/host/Storage.java @@ -35,6 +35,7 @@ * @author Ahmed Ashour * @author Marc Guillemot * @author Ronald Brill + * @author Kanoko Yamamoto */ @JsxClass public class Storage extends HtmlUnitScriptable { @@ -164,7 +165,8 @@ public Object getItem(final String key) { */ @JsxFunction public void setItem(final String key, final String data) { - final long storeSize = storeSize_ + data.length(); + final String existingData = store_.get(key); + final long storeSize = storeSize_ + data.length() - (existingData != null ? existingData.length() : 0); if (storeSize > STORE_SIZE_KIMIT) { throw JavaScriptEngine.throwAsScriptRuntimeEx( new DOMException((short) 22, "QuotaExceededError: Failed to execute 'setItem' on 'Storage': "