Skip to content

Commit 942b99b

Browse files
committed
fix duplicate ua span
1 parent af6d579 commit 942b99b

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

src/HttpUserAgentParser/HttpUserAgentParser.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,12 @@ public static (string Name, string? Version)? GetBrowser(string userAgent)
8888
// Version token may differ (e.g., Safari uses "Version/")
8989
// Keep full span immutable across iterations
9090

91-
ReadOnlySpan<char> uaFull = userAgent.AsSpan();
9291
int versionSearchStart;
9392
// For rules without a specific version token, ensure pattern Token/<digits>
9493
if (string.IsNullOrEmpty(browserRule.VersionToken))
9594
{
9695
int afterDetect = detectIndex + browserRule.DetectToken.Length;
97-
if (afterDetect >= uaFull.Length || uaFull[afterDetect] != '/')
96+
if (afterDetect >= ua.Length || ua[afterDetect] != '/')
9897
{
9998
// Likely a misspelling or partial token (e.g., Edgg, Oprea, Chromee)
10099
continue;
@@ -118,21 +117,20 @@ public static (string Name, string? Version)? GetBrowser(string userAgent)
118117
}
119118

120119
// Work on a local slice to avoid mutating the main span for following rules
121-
if (versionSearchStart < 0 || versionSearchStart >= uaFull.Length)
120+
if (versionSearchStart < 0 || versionSearchStart >= ua.Length)
122121
{
123122
// Nothing to search; try next rule
124123
continue;
125124
}
126125

127-
ReadOnlySpan<char> search = uaFull.Slice(versionSearchStart);
126+
ReadOnlySpan<char> search = ua.Slice(versionSearchStart);
128127
if (TryExtractVersion(search, out Range range))
129128
{
130129
string? version = search[range].ToString();
131130
return (browserRule.Name, version);
132131
}
133132

134133
// If we didn't find a version for this rule, try next rule
135-
continue;
136134
}
137135

138136
return null;

0 commit comments

Comments
 (0)