diff --git a/config/src/main/java/com/typesafe/config/impl/ConfigNodeObject.java b/config/src/main/java/com/typesafe/config/impl/ConfigNodeObject.java index 6f520d0c..7e704f11 100644 --- a/config/src/main/java/com/typesafe/config/impl/ConfigNodeObject.java +++ b/config/src/main/java/com/typesafe/config/impl/ConfigNodeObject.java @@ -194,7 +194,7 @@ final class ConfigNodeObject extends ConfigNodeComplexValue { } // Otherwise, construct the new setting - boolean startsWithBrace = super.children.get(0) instanceof ConfigNodeSingleToken && + boolean startsWithBrace = !super.children.isEmpty() && super.children.get(0) instanceof ConfigNodeSingleToken && ((ConfigNodeSingleToken) super.children.get(0)).token() == Tokens.OPEN_CURLY; ArrayList newNodes = new ArrayList(); newNodes.addAll(indentation); @@ -260,7 +260,7 @@ final class ConfigNodeObject extends ConfigNodeComplexValue { } } if (!startsWithBrace) { - if (childrenCopy.get(childrenCopy.size() - 1) instanceof ConfigNodeSingleToken && + if (!childrenCopy.isEmpty() && childrenCopy.get(childrenCopy.size() - 1) instanceof ConfigNodeSingleToken && Tokens.isNewline(((ConfigNodeSingleToken) childrenCopy.get(childrenCopy.size() - 1)).token())) childrenCopy.add(childrenCopy.size() - 1, new ConfigNodeField(newNodes)); else diff --git a/config/src/test/scala/com/typesafe/config/impl/ConfigDocumentTest.scala b/config/src/test/scala/com/typesafe/config/impl/ConfigDocumentTest.scala index bfeca198..0ab799f4 100644 --- a/config/src/test/scala/com/typesafe/config/impl/ConfigDocumentTest.scala +++ b/config/src/test/scala/com/typesafe/config/impl/ConfigDocumentTest.scala @@ -429,4 +429,12 @@ class ConfigDocumentTest extends TestUtils { assertEquals("a : b\n include \"foo\"\n c : d\n", configDocument.setValue("c", "d").render()) } + @Test + def configDocumentEmptyTest { + val origText = "" + val configDocument = ConfigDocumentFactory.parseString(origText) + + assertEquals(" a : 1", configDocument.setValue("a", "1").render) + } + }