Merge pull request #4765 from ethereum/fixes-issue-4673

[WIP] Fixes issue where computing storage size for a number would take too long (or even cause a crash).
This commit is contained in:
chriseth
2018-08-14 17:34:04 +02:00
committed by GitHub
4 changed files with 9 additions and 2 deletions
+2 -1
View File
@@ -1278,7 +1278,8 @@ shared_ptr<FixedPointType const> RationalNumberType::fixedPointType() const
return shared_ptr<FixedPointType const>();
// This means we round towards zero for positive and negative values.
bigint v = value.numerator() / value.denominator();
if (negative)
if (negative && v != 0)
// modify value to satisfy bit requirements for negative numbers:
// add one bit for sign and decrement because negative numbers can be larger
v = (v - 1) << 1;