瀏覽代碼

internal/impl: fix race ExtensionInfo.lazyInitSlow

The xi.init flag should not be set until after we have truly
initialized everything.

Change-Id: I43dcb300917145ce19a7199fa871acd0df325c6c
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/194439
Reviewed-by: Damien Neil <dneil@google.com>
Joe Tsai 6 年之前
父節點
當前提交
2df47c918b
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      internal/impl/extension.go

+ 1 - 1
internal/impl/extension.go

@@ -145,7 +145,7 @@ func (xi *ExtensionInfo) lazyInitSlow() {
 	if xi.init == extensionInfoFullInit {
 		return
 	}
-	atomic.StoreUint32(&xi.init, extensionInfoFullInit)
+	defer atomic.StoreUint32(&xi.init, extensionInfoFullInit)
 
 	if xi.desc == nil {
 		xi.initFromLegacy()