From 734fd93f59370846aa957ca57a054329d7d936dd Mon Sep 17 00:00:00 2001
From: John Olheiser <john.olheiser@gmail.com>
Date: Thu, 22 Jun 2023 11:01:54 -0500
Subject: [PATCH] Move some regexp out of functions (#25430)  (#25445)

Partial backport of #25430

Not a bug, but worth backporting for efficiency.

Signed-off-by: jolheiser <john.olheiser@gmail.com>
---
 modules/util/path.go   | 5 +++--
 services/lfs/server.go | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/modules/util/path.go b/modules/util/path.go
index 1a68bc7488..58258560dd 100644
--- a/modules/util/path.go
+++ b/modules/util/path.go
@@ -222,6 +222,8 @@ func isOSWindows() bool {
 	return runtime.GOOS == "windows"
 }
 
+var driveLetterRegexp = regexp.MustCompile("/[A-Za-z]:/")
+
 // FileURLToPath extracts the path information from a file://... url.
 func FileURLToPath(u *url.URL) (string, error) {
 	if u.Scheme != "file" {
@@ -235,8 +237,7 @@ func FileURLToPath(u *url.URL) (string, error) {
 	}
 
 	// If it looks like there's a Windows drive letter at the beginning, strip off the leading slash.
-	re := regexp.MustCompile("/[A-Za-z]:/")
-	if re.MatchString(path) {
+	if driveLetterRegexp.MatchString(path) {
 		return path[1:], nil
 	}
 	return path, nil
diff --git a/services/lfs/server.go b/services/lfs/server.go
index a18e752d47..b32f218785 100644
--- a/services/lfs/server.go
+++ b/services/lfs/server.go
@@ -77,6 +77,8 @@ func CheckAcceptMediaType(ctx *context.Context) {
 	}
 }
 
+var rangeHeaderRegexp = regexp.MustCompile(`bytes=(\d+)\-(\d*).*`)
+
 // DownloadHandler gets the content from the content store
 func DownloadHandler(ctx *context.Context) {
 	rc := getRequestContext(ctx)
@@ -92,8 +94,7 @@ func DownloadHandler(ctx *context.Context) {
 	toByte = meta.Size - 1
 	statusCode := http.StatusOK
 	if rangeHdr := ctx.Req.Header.Get("Range"); rangeHdr != "" {
-		regex := regexp.MustCompile(`bytes=(\d+)\-(\d*).*`)
-		match := regex.FindStringSubmatch(rangeHdr)
+		match := rangeHeaderRegexp.FindStringSubmatch(rangeHdr)
 		if len(match) > 1 {
 			statusCode = http.StatusPartialContent
 			fromByte, _ = strconv.ParseInt(match[1], 10, 32)