Forráskód Böngészése

proto: initialize ExtensionDesc.Type at registration time

When an ExtensionDesc with an uninitialized Type field is registered,
initialize the Type.

Change-Id: I2c09312e0c4873b7183d0a3c705cddc53d441f1e
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/189161
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
Damien Neil 6 éve
szülő
commit
7037721e6d
1 módosított fájl, 5 hozzáadás és 0 törlés
  1. 5 0
      proto/registry.go

+ 5 - 0
proto/registry.go

@@ -9,6 +9,8 @@ import (
 	"log"
 	"reflect"
 	"strconv"
+
+	"google.golang.org/protobuf/runtime/protoimpl"
 )
 
 var enumValueMaps = make(map[string]map[string]int32)
@@ -139,6 +141,9 @@ var extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc)
 
 // RegisterExtension is called from the generated code.
 func RegisterExtension(desc *ExtensionDesc) {
+	if desc.Type == nil {
+		desc.Type = protoimpl.X.ExtensionTypeFromDesc(desc)
+	}
 	if registerExtensionAlt != nil {
 		registerExtensionAlt(desc) // populated by hooks_enabled.go
 		return