aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/ast/Types.cpp
diff options
context:
space:
mode:
authorChristian Parpart <christian@parpart.family>2018-08-08 20:46:17 +0800
committerChristian Parpart <christian@ethereum.org>2018-08-14 21:38:10 +0800
commit43bda534102c95a85daddc64fb466eb8c88e2325 (patch)
tree825f2366d2eb90ca0f6f154c45ed67e12a478dc4 /libsolidity/ast/Types.cpp
parent43db88b8363d73ee2f5ffa094ff506414261bd11 (diff)
downloaddexon-solidity-43bda534102c95a85daddc64fb466eb8c88e2325.tar
dexon-solidity-43bda534102c95a85daddc64fb466eb8c88e2325.tar.gz
dexon-solidity-43bda534102c95a85daddc64fb466eb8c88e2325.tar.bz2
dexon-solidity-43bda534102c95a85daddc64fb466eb8c88e2325.tar.lz
dexon-solidity-43bda534102c95a85daddc64fb466eb8c88e2325.tar.xz
dexon-solidity-43bda534102c95a85daddc64fb466eb8c88e2325.tar.zst
dexon-solidity-43bda534102c95a85daddc64fb466eb8c88e2325.zip
Fixes issue where computing storage size for a number would take too long.
Fixes #4673.
Diffstat (limited to 'libsolidity/ast/Types.cpp')
-rw-r--r--libsolidity/ast/Types.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp
index 2dcfda42..21631693 100644
--- a/libsolidity/ast/Types.cpp
+++ b/libsolidity/ast/Types.cpp
@@ -1263,7 +1263,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;