Skip to content

Commit

Permalink
fix for #235
Browse files Browse the repository at this point in the history
  • Loading branch information
kevin-montrose committed Aug 7, 2016
1 parent 769ef06 commit 0672c4d
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 5 deletions.
5 changes: 5 additions & 0 deletions Jil/Deserialize/Methods.ReadNumbers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2074,6 +2074,11 @@ static decimal _ReadDecimalFast(TextReader reader, ref char[] buffer)
idx++;
}

if (negative)
{
n2 = -n2;
}

result = (long)n1 * multiplier + (long)n2;
}

Expand Down
5 changes: 5 additions & 0 deletions Jil/Deserialize/Methods.ThunkReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1758,6 +1758,11 @@ static decimal _ReadDecimalFastThunkReader(ref ThunkReader reader, ref char[] bu
idx++;
}

if (negative)
{
n2 = -n2;
}

result = (long)n1 * multiplier + (long)n2;
}

Expand Down
28 changes: 23 additions & 5 deletions JilTests/DeserializeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7318,11 +7318,29 @@ public void EmptyEnum()
[TestMethod]
public void Issue235()
{
var res1 = JSON.Deserialize<decimal>("-100000000000001");
Assert.AreEqual(-100000000000001m, res1);

var res2 = JSON.Deserialize<decimal>("-100000000000002");
Assert.AreEqual(-100000000000002m, res2);
// strings
{
var res1 = JSON.Deserialize<decimal>("-100000000000001");
Assert.AreEqual(-100000000000001m, res1);

var res2 = JSON.Deserialize<decimal>("-100000000000002");
Assert.AreEqual(-100000000000002m, res2);
}

// streams
{
using (var stream = new StringReader("-100000000000001"))
{
var res = JSON.Deserialize<decimal>(stream);
Assert.AreEqual(-100000000000001m, res);
}

using (var stream = new StringReader("-100000000000002"))
{
var res = JSON.Deserialize<decimal>(stream);
Assert.AreEqual(-100000000000002m, res);
}
}
}

#if !DEBUG
Expand Down

0 comments on commit 0672c4d

Please sign in to comment.