From da76899dbe174e8eee39e0e50bc53ae5783fc9eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Fr=C3=B6hle?= Date: Tue, 13 Jul 2021 15:56:23 +0200 Subject: [PATCH] Make getIssueFullPattern() concurrency save --- modules/markup/html.go | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/modules/markup/html.go b/modules/markup/html.go index 7b9844bf7522a..c7dc2cbeccfbd 100644 --- a/modules/markup/html.go +++ b/modules/markup/html.go @@ -70,9 +70,6 @@ var ( // CSS class for action keywords (e.g. "closes: #1") const keywordClass = "issue-keyword" -// regexp for full links to issues/pulls -var issueFullPattern *regexp.Regexp - // IsLink reports whether link fits valid format. func IsLink(link []byte) bool { return isLink(link) @@ -87,13 +84,13 @@ func isLinkStr(link string) bool { return validLinksPattern.MatchString(link) } -// FIXME: This function is not concurrent safe func getIssueFullPattern() *regexp.Regexp { - if issueFullPattern == nil { - issueFullPattern = regexp.MustCompile(regexp.QuoteMeta(setting.AppURL) + - `\w+/\w+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#]\S+.(\S+)?)?\b`) - } - return issueFullPattern + var issueFullPattern = regexp.MustCompile(regexp.QuoteMeta(setting.AppURL) + + `\w+/\w+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#]\S+.(\S+)?)?\b`) + + return func() *regexp.Regexp { + return issueFullPattern + }() } // CustomLinkURLSchemes allows for additional schemes to be detected when parsing links within text