From 661fadd0836a35256f88481a0a5f71f296847103 Mon Sep 17 00:00:00 2001 From: Manuel Beck Date: Thu, 28 May 2026 15:26:52 +0200 Subject: [PATCH] doc(CordovaPreferences): Improve documentation for using Long.decode instead of Integer.decode (#1943) - Document why Integer.decode cannot be used for hex values when thy exceed Integer.MAX_VALUE when parsed as positive number and Long.decode has to be used instead --- framework/src/org/apache/cordova/CordovaPreferences.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/framework/src/org/apache/cordova/CordovaPreferences.java b/framework/src/org/apache/cordova/CordovaPreferences.java index 39269c88..26fd6de7 100644 --- a/framework/src/org/apache/cordova/CordovaPreferences.java +++ b/framework/src/org/apache/cordova/CordovaPreferences.java @@ -74,7 +74,10 @@ public class CordovaPreferences { name = name.toLowerCase(Locale.ENGLISH); String value = prefs.get(name); if (value != null) { - // Use Integer.decode() can't handle it if the highest bit is set. + // Some 32-bit hex values (for example, 0x80000000) are valid int bit patterns + // but exceed Integer.MAX_VALUE when read as positive numbers. Integer.decode() + // rejects such values with NumberFormatException, so decode as long first and + // cast to int to preserve the intended 32-bit value. return (int)(long)Long.decode(value); } return defaultValue;