Kaynağa Gözat

internal/filedesc: gracefully handle unresolved enums

If an enum dependency is unresolved, there will be no enum values.
In such a case, just fall back to using number 0.

No tests because this situation is hard to replicate.

Change-Id: I41f5e1a5c6c8afd1ab6173d2dcfa33e611fa9560
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/195982
Reviewed-by: Damien Neil <dneil@google.com>
Joe Tsai 6 yıl önce
ebeveyn
işleme
efdf02ed5f
1 değiştirilmiş dosya ile 4 ekleme ve 1 silme
  1. 4 1
      internal/filedesc/desc.go

+ 4 - 1
internal/filedesc/desc.go

@@ -579,7 +579,10 @@ func (dv *defaultValue) get(fd pref.FieldDescriptor) pref.Value {
 		case pref.BytesKind:
 		case pref.BytesKind:
 			return pref.ValueOf([]byte(nil))
 			return pref.ValueOf([]byte(nil))
 		case pref.EnumKind:
 		case pref.EnumKind:
-			return pref.ValueOf(fd.Enum().Values().Get(0).Number())
+			if evs := fd.Enum().Values(); evs.Len() > 0 {
+				return pref.ValueOf(evs.Get(0).Number())
+			}
+			return pref.ValueOf(pref.EnumNumber(0))
 		}
 		}
 	}
 	}