goprotobuf: Fix performance regression in proto encoding for the common case where we get ErrNil.
R=r
CC=golang-dev
https://codereview.appspot.com/13882044
diff --git a/proto/encode.go b/proto/encode.go
index d49ab84..1cc62e9 100644
--- a/proto/encode.go
+++ b/proto/encode.go
@@ -587,11 +587,13 @@
p := prop.Prop[i]
if p.enc != nil {
err := p.enc(o, p, base)
- if err != nil && !state.shouldContinue(err, p) {
- if err != ErrNil {
+ if err != nil {
+ if err == ErrNil {
+ if p.Required && state.err == nil {
+ state.err = &ErrRequiredNotSet{p.Name}
+ }
+ } else if !state.shouldContinue(err, p) {
return err
- } else if p.Required && state.err == nil {
- state.err = &ErrRequiredNotSet{p.Name}
}
}
}