diff --git a/src/Hashids.net/Hashids.cs b/src/Hashids.net/Hashids.cs index 4c61919..a248a9a 100644 --- a/src/Hashids.net/Hashids.cs +++ b/src/Hashids.net/Hashids.cs @@ -565,6 +565,9 @@ private long GetNumberFrom(string hash) private long[] GetNumbersFrom(string hash) { + if (string.IsNullOrWhiteSpace(hash)) + return Array.Empty(); + var result = NumbersFrom(hash); int bufferSizeToAllocate = Math.Max(hash.Length, _minHashLength); @@ -583,9 +586,6 @@ private long[] GetNumbersFrom(string hash) private long[] NumbersFrom(string hash) { - if (string.IsNullOrWhiteSpace(hash)) - return Array.Empty(); - var guardedHash = hash.AsSpan(); var (count, ranges) = Split(guardedHash, _guards); diff --git a/test/Hashids.net.test/IssueSpecificTests.cs b/test/Hashids.net.test/IssueSpecificTests.cs index ef94f07..e61af07 100644 --- a/test/Hashids.net.test/IssueSpecificTests.cs +++ b/test/Hashids.net.test/IssueSpecificTests.cs @@ -95,5 +95,16 @@ void Issue85_hash_shorter_than_min_length_should_not_throw_exception() Assert.Empty(numbers); } + + [Theory] + [InlineData(null)] + [InlineData("")] + void Issue93_decoding_null_or_empty_string_should_return_empty_array(string input) + { + var hashids = new Hashids("salt"); + int[] numbers = hashids.Decode(input); + + Assert.Empty(numbers); + } } }