File tree Expand file tree Collapse file tree 2 files changed +9
-7
lines changed Expand file tree Collapse file tree 2 files changed +9
-7
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ import (
13
13
"path/filepath"
14
14
"regexp"
15
15
"strings"
16
+ "sync"
16
17
17
18
"code.gitea.io/gitea/modules/base"
18
19
"code.gitea.io/gitea/modules/emoji"
71
72
// CSS class for action keywords (e.g. "closes: #1")
72
73
const keywordClass = "issue-keyword"
73
74
74
- // regexp for full links to issues/pulls
75
- var issueFullPattern * regexp.Regexp
76
-
77
75
// IsLink reports whether link fits valid format.
78
76
func IsLink (link []byte ) bool {
79
77
return isLink (link )
@@ -88,12 +86,17 @@ func isLinkStr(link string) bool {
88
86
return validLinksPattern .MatchString (link )
89
87
}
90
88
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
+
92
95
func getIssueFullPattern () * regexp.Regexp {
93
- if issueFullPattern == nil {
96
+ issueFullPatternOnce . Do ( func () {
94
97
issueFullPattern = regexp .MustCompile (regexp .QuoteMeta (setting .AppURL ) +
95
98
`\w+/\w+/(?:issues|pulls)/((?:\w{1,10}-)?[1-9][0-9]*)([\?|#]\S+.(\S+)?)?\b` )
96
- }
99
+ })
97
100
return issueFullPattern
98
101
}
99
102
Original file line number Diff line number Diff line change @@ -19,7 +19,6 @@ import (
19
19
20
20
// Init initialize regexps for markdown parsing
21
21
func Init () {
22
- getIssueFullPattern ()
23
22
NewSanitizer ()
24
23
if len (setting .Markdown .CustomURLSchemes ) > 0 {
25
24
CustomLinkURLSchemes (setting .Markdown .CustomURLSchemes )
You can’t perform that action at this time.
0 commit comments