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) | 	return string(b) | ||||||
| } | } | ||||||
|  |  | ||||||
| var ( |  | ||||||
| 	titleCaser        = cases.Title(language.English) |  | ||||||
| 	titleCaserNoLower = cases.Title(language.English, cases.NoLower) |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // ToTitleCase returns s with all english words capitalized | // ToTitleCase returns s with all english words capitalized | ||||||
| func ToTitleCase(s string) string { | 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 { | 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) { | func logError(msg string, args ...any) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user