goprotobuf: Match C++ for text format of unknown fields.

R=r
CC=golang-dev
https://codereview.appspot.com/7982043
diff --git a/proto/text_parser.go b/proto/text_parser.go
index b4e4bc1..9bf8095 100644
--- a/proto/text_parser.go
+++ b/proto/text_parser.go
@@ -505,8 +505,11 @@
 				return p.errorf("unknown field name %q in %v", tok.value, st)
 			}
 
+			dst := sv.Field(fi)
+			isDstNil := isNil(dst)
+
 			// Check that it's not already set if it's not a repeated field.
-			if !props.Repeated && !isNil(sv.Field(fi)) {
+			if !props.Repeated && !isDstNil {
 				return p.errorf("non-repeated field %q was repeated", tok.value)
 			}
 
@@ -514,8 +517,6 @@
 				return err
 			}
 
-			dst := sv.Field(fi)
-
 			// Parse into the field.
 			if err := p.readAny(dst, props); err != nil {
 				return err