Skip to content

Commit 8d962da

Browse files
authored
cleanup code issueFullPattern in modules/markup (go-gitea#16419)
fix go-gitea#16415
1 parent d7ee5dc commit 8d962da

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

modules/markup/html.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"path/filepath"
1414
"regexp"
1515
"strings"
16+
"sync"
1617

1718
"code.gitea.io/gitea/modules/base"
1819
"code.gitea.io/gitea/modules/emoji"
@@ -71,9 +72,6 @@ var (
7172
// CSS class for action keywords (e.g. "closes: #1")
7273
const keywordClass = "issue-keyword"
7374

74-
// regexp for full links to issues/pulls
75-
var issueFullPattern *regexp.Regexp
76-
7775
// IsLink reports whether link fits valid format.
7876
func IsLink(link []byte) bool {
7977
return isLink(link)
@@ -88,12 +86,17 @@ func isLinkStr(link string) bool {
8886
return validLinksPattern.MatchString(link)
8987
}
9088

91-
// FIXME: This function is not concurrent safe
89+
// regexp for full links to issues/pulls
90+
var issueFullPattern *regexp.Regexp
91+
92+
// Once for to prevent races
93+
var issueFullPatternOnce sync.Once
94+
9295
func getIssueFullPattern() *regexp.Regexp {
93-
if issueFullPattern == nil {
96+
issueFullPatternOnce.Do(func() {
9497
issueFullPattern = regexp.MustCompile(regexp.QuoteMeta(setting.AppURL) +
9598
`\w+/\w+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#]\S+.(\S+)?)?\b`)
96-
}
99+
})
97100
return issueFullPattern
98101
}
99102

modules/markup/renderer.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919

2020
// Init initialize regexps for markdown parsing
2121
func Init() {
22-
getIssueFullPattern()
2322
NewSanitizer()
2423
if len(setting.Markdown.CustomURLSchemes) > 0 {
2524
CustomLinkURLSchemes(setting.Markdown.CustomURLSchemes)

0 commit comments

Comments
 (0)