Skip to content

Commit 1e6fb51

Browse files
committed
Store number format in static field for minor performance improvement (Issue #2)
1 parent eb6587f commit 1e6fb51

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

BencodeNET.Net45/Bencode.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using System.IO;
45
using System.Text;
56
using BencodeNET.Exceptions;
@@ -12,6 +13,8 @@ public static class Bencode
1213
{
1314
private static Encoding _defaultEncoding = Encoding.UTF8;
1415

16+
private static readonly NumberFormatInfo _invariantNumberFormat = CultureInfo.InvariantCulture.NumberFormat;
17+
1518
/// <summary>
1619
/// Gets or sets the default encoding used to convert strings to and from bytes
1720
/// when encoding/decoding bencode and no encoding is explicitly specified.
@@ -181,7 +184,7 @@ public static BString DecodeString(BencodeStream stream, Encoding encoding)
181184
}
182185

183186
long stringLength;
184-
if (!long.TryParse(lengthString.ToString(), out stringLength))
187+
if (!long.TryParse(lengthString.ToString(), NumberStyles.None, _invariantNumberFormat, out stringLength))
185188
{
186189
throw new BencodeDecodingException<BString>(string.Format("Invalid length of string '{0}'", lengthString), startPosition);
187190
}
@@ -275,7 +278,7 @@ public static BNumber DecodeNumber(BencodeStream stream)
275278
throw new BencodeDecodingException<BNumber>("Missing end character 'e'.", stream.Position);
276279

277280
long number;
278-
if (!long.TryParse(digits.ToString(), out number))
281+
if (!long.TryParse(digits.ToString(), NumberStyles.AllowLeadingSign, _invariantNumberFormat, out number))
279282
{
280283
throw new BencodeDecodingException<BNumber>(
281284
string.Format("The value '{0}' is invalid. Supported values range from {1:N0} to {2:N0}",

0 commit comments

Comments
 (0)