From 8f85b8a7306f43c0637241af0fcb14b7d3d31d49 Mon Sep 17 00:00:00 2001 From: "Sourabh S. Rawat" Date: Thu, 26 Jun 2025 15:40:41 +0530 Subject: [PATCH] [bugfix] Fix for data race in PascalCase --- codegen/casing.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/codegen/casing.go b/codegen/casing.go index c8348d840..ef212d35d 100644 --- a/codegen/casing.go +++ b/codegen/casing.go @@ -29,7 +29,10 @@ import ( "unicode/utf8" ) -var pascalCaseMap *sync.Map +var ( + pascalCaseMap *sync.Map + once sync.Once +) // CommonInitialisms is taken from https://github.com/golang/lint/blob/206c0f020eba0f7fbcfbc467a5eb808037df2ed6/lint.go#L731 var CommonInitialisms = map[string]bool{ @@ -137,9 +140,9 @@ func ensureGolangAncronymCasing(segment []byte) []byte { // PascalCase converts the given string to pascal case func PascalCase(src string) string { - if pascalCaseMap == nil { + once.Do(func() { pascalCaseMap = &sync.Map{} - } + }) if res, ok := pascalCaseMap.Load(src); ok { return res.(string) }