Don't allow empty intermediate tables
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 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) 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 @@ s := string(buff) tree, err = Load(s) } - return }