mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Fix cases.Title crash for concurrency (#23885)
				
					
				
			Regression of #19676 and #21814 Fix #23872 `cases.Title` is not thread-safe, it has internal state, so it can't be used as a global shared variable.
This commit is contained in:
		| @@ -186,19 +186,16 @@ func ToUpperASCII(s string) string { | ||||
| 	return string(b) | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	titleCaser        = cases.Title(language.English) | ||||
| 	titleCaserNoLower = cases.Title(language.English, cases.NoLower) | ||||
| ) | ||||
|  | ||||
| // ToTitleCase returns s with all english words capitalized | ||||
| func ToTitleCase(s string) string { | ||||
| 	return titleCaser.String(s) | ||||
| 	// `cases.Title` is not thread-safe, do not use global shared variable for it | ||||
| 	return cases.Title(language.English).String(s) | ||||
| } | ||||
|  | ||||
| // ToTitleCaseNoLower returns s with all english words capitalized without lowercasing | ||||
| // ToTitleCaseNoLower returns s with all english words capitalized without lower-casing | ||||
| func ToTitleCaseNoLower(s string) string { | ||||
| 	return titleCaserNoLower.String(s) | ||||
| 	// `cases.Title` is not thread-safe, do not use global shared variable for it | ||||
| 	return cases.Title(language.English, cases.NoLower).String(s) | ||||
| } | ||||
|  | ||||
| func logError(msg string, args ...any) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user