@@ -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