From 03566d67027e4f7f761b9b874f2eec8c84aed788 Mon Sep 17 00:00:00 2001 From: paymon123 Date: Thu, 8 Oct 2020 14:34:14 -0700 Subject: [PATCH] ConfigManager: Fix NPE when resetting configs with null default --- .../runelite/client/config/ConfigManager.java | 3 ++- .../client/config/ConfigManagerTest.java | 14 +++++++++++++- .../net/runelite/client/config/TestConfig.java | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java index af158dfbb8..b13c54140c 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java @@ -659,6 +659,7 @@ public class ConfigManager return str; } + @Nullable static String objectToString(Object object) { if (object instanceof Color) @@ -702,7 +703,7 @@ public class ConfigManager { return Long.toString(((Duration) object).toMillis()); } - return object.toString(); + return object == null ? null : object.toString(); } @Subscribe(priority = 100) diff --git a/runelite-client/src/test/java/net/runelite/client/config/ConfigManagerTest.java b/runelite-client/src/test/java/net/runelite/client/config/ConfigManagerTest.java index aae6194a3c..208e90b699 100644 --- a/runelite-client/src/test/java/net/runelite/client/config/ConfigManagerTest.java +++ b/runelite-client/src/test/java/net/runelite/client/config/ConfigManagerTest.java @@ -118,6 +118,18 @@ public class ConfigManagerTest TestConfig conf = manager.getConfig(TestConfig.class); ConfigDescriptor descriptor = manager.getConfigDescriptor(conf); - Assert.assertEquals(1, descriptor.getItems().size()); + Assert.assertEquals(2, descriptor.getItems().size()); + } + + @Test + public void testResetNullDefaultConfig() + { + TestConfig conf = manager.getConfig(TestConfig.class); + ConfigDescriptor descriptor = manager.getConfigDescriptor(conf); + conf.nullDefaultKey("new value"); + + manager.unsetConfiguration(descriptor.getGroup().value(), "nullDefaultKey"); + manager.setDefaultConfiguration(conf, false); + Assert.assertNull(conf.nullDefaultKey()); } } diff --git a/runelite-client/src/test/java/net/runelite/client/config/TestConfig.java b/runelite-client/src/test/java/net/runelite/client/config/TestConfig.java index 66e659d98a..78cf0edb36 100644 --- a/runelite-client/src/test/java/net/runelite/client/config/TestConfig.java +++ b/runelite-client/src/test/java/net/runelite/client/config/TestConfig.java @@ -43,4 +43,21 @@ public interface TestConfig extends Config description = "value" ) void key(String key); + + @ConfigItem( + keyName = "nullDefaultKey", + name = "Key Name", + description = "value" + ) + void nullDefaultKey(String key); + + @ConfigItem( + keyName = "nullDefaultKey", + name = "Key Name", + description = "value" + ) + default String nullDefaultKey() + { + return null; + } }