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
 }