Fix generator error with same inner message name (#746)
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index b55af56..2fb47c0 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -1468,6 +1468,8 @@
         optional_only.ClearField(str('nested_type'))
         optional_only.ClearField(str('extension'))
         optional_only.ClearField(str('enum_type'))
+        optional_only.name += str(id(self))
+
         desc = google.protobuf.descriptor.MakeDescriptor(optional_only)
         msg = reflection.MakeClass(desc)()
 
diff --git a/tests/regression/issue_746/SConscript b/tests/regression/issue_746/SConscript
new file mode 100644
index 0000000..5a59d8a
--- /dev/null
+++ b/tests/regression/issue_746/SConscript
@@ -0,0 +1,8 @@
+# Regression test for #746:
+# Name conflict when generating default values for message
+
+Import("env")
+
+env.NanopbProto("test.proto")
+env.Object("test.pb.c")
+
diff --git a/tests/regression/issue_746/test.proto b/tests/regression/issue_746/test.proto
new file mode 100644
index 0000000..fe76863
--- /dev/null
+++ b/tests/regression/issue_746/test.proto
@@ -0,0 +1,25 @@
+syntax = "proto2";  // must be "proto2", proto3 requires enums starting with 0.
+
+enum Enum
+{
+	enumerand = 1;  // must be non-zero
+}
+
+message Outer1
+{
+	message Inner
+	{
+		optional Enum enum1 = 1;  // can also be "required"
+	}
+}
+
+message Outer2
+{
+	message Inner
+	{
+		// further trouble of this is also named "enum1"
+		optional Enum enum2 = 1;  // can also be "required"
+
+	}
+}
+