Skip to content

Commit 3e1be2f

Browse files
fix(csharp): resolve ambiguity in parsing query strings
1 parent 66cb7ba commit 3e1be2f

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

src/Orb.Tests/TestBase.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,23 @@ internal static bool UrisEqual(Uri uri1, Uri uri2)
3737
return Enumerable.SequenceEqual(query1, query2);
3838
}
3939

40+
private static readonly char[] _ampersandArray = ['&'];
41+
private static readonly char[] _equalsArray = ['='];
42+
4043
static SortedDictionary<string, string> ParseQueryString(string query)
4144
{
4245
var ret = new SortedDictionary<string, string>(StringComparer.Ordinal);
4346

4447
if (string.IsNullOrEmpty(query))
4548
return ret;
4649

47-
var pairs = query.TrimStart('?').Split(['&'], StringSplitOptions.RemoveEmptyEntries);
50+
var pairs = query
51+
.TrimStart('?')
52+
.Split(_ampersandArray, StringSplitOptions.RemoveEmptyEntries);
4853

4954
foreach (var pair in pairs)
5055
{
51-
var parts = pair.Split(['&'], 2);
56+
var parts = pair.Split(_equalsArray, 2);
5257
var key = Uri.UnescapeDataString(parts[0]);
5358
var value = parts.Length > 1 ? Uri.UnescapeDataString(parts[1]) : string.Empty;
5459
ret[key] = value;

0 commit comments

Comments
 (0)