From c743c9031558f834131a657c4ad0749080e4d42c Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Tue, 10 Dec 2013 16:23:53 +0100 Subject: [PATCH] Don't allow empty intermediate tables --- parser_test.go | 7 +++++++ toml.go | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/parser_test.go b/parser_test.go index cda0322..441c4e2 100644 --- a/parser_test.go +++ b/parser_test.go @@ -203,6 +203,13 @@ func TestDuplicateGroups(t *testing.T) { } } +func TestEmptyIntermediateTable(t *testing.T) { + _, err := Load("[foo..bar]") + if err.Error() != "empty intermediate table" { + t.Error("Bad error message:", err.Error()) + } +} + func TestMissingFile(t *testing.T) { _, err := LoadFile("foo.toml") if err.Error() != "open foo.toml: no such file or directory" { diff --git a/toml.go b/toml.go index bfd12b2..e1a137f 100644 --- a/toml.go +++ b/toml.go @@ -88,6 +88,9 @@ func (t *TomlTree) Set(key string, value interface{}) { func (t *TomlTree) createSubTree(key string) { subtree := t for _, intermediate_key := range strings.Split(key, ".") { + if intermediate_key == "" { + panic("empty intermediate table") + } _, exists := (*subtree)[intermediate_key] if !exists { var new_tree TomlTree = make(TomlTree) @@ -121,6 +124,5 @@ func LoadFile(path string) (tree *TomlTree, err error) { s := string(buff) tree, err = Load(s) } - return }