diff --git a/mapstructure.go b/mapstructure.go
index 937c205..49362eb 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -76,7 +76,7 @@
 }
 
 func decodeStruct(name string, data interface{}, val reflect.Value) error {
-	dataVal := reflect.ValueOf(data)
+	dataVal := reflect.Indirect(reflect.ValueOf(data))
 	dataValKind := dataVal.Kind()
 	if dataValKind != reflect.Map {
 		return fmt.Errorf("'%s' expected a map, got '%s'", name, dataValKind)
@@ -91,7 +91,7 @@
 
 	// At this point we know that data is a map with string keys, so
 	// we can properly cast it here.
-	m, ok := data.(map[string]interface{})
+	m, ok := dataVal.Interface().(map[string]interface{})
 	if !ok {
 		panic("data could not be cast as map[string]interface{}")
 	}
diff --git a/mapstructure_test.go b/mapstructure_test.go
index a55953b..82ee210 100644
--- a/mapstructure_test.go
+++ b/mapstructure_test.go
@@ -87,6 +87,46 @@
 	}
 }
 
+func TestNestedTypePointer(t *testing.T) {
+	t.Parallel()
+
+	input := map[string]interface{}{
+		"vfoo": "foo",
+		"vbar": &map[string]interface{}{
+			"vstring": "foo",
+			"vint":    42,
+			"vbool":   true,
+		},
+	}
+
+	var result Nested
+	err := MapToStruct(input, &result)
+	if err != nil {
+		t.Errorf("got an err: %s", err.Error())
+		t.FailNow()
+	}
+
+	if result.Vfoo != "foo" {
+		t.Errorf("vfoo value should be 'foo': %#v", result.Vfoo)
+	}
+
+	if result.Vbar.Vstring != "foo" {
+		t.Errorf("vstring value should be 'foo': %#v", result.Vbar.Vstring)
+	}
+
+	if result.Vbar.Vint != 42 {
+		t.Errorf("vint value should be 42: %#v", result.Vbar.Vint)
+	}
+
+	if result.Vbar.Vbool != true {
+		t.Errorf("vbool value should be true: %#v", result.Vbar.Vbool)
+	}
+
+	if result.Vbar.Vextra != "" {
+		t.Errorf("vextra value should be empty: %#v", result.Vbar.Vextra)
+	}
+}
+
 func TestInvalidType(t *testing.T) {
 	t.Parallel()
 
