From b00fa34382461e1770f9e90e125a716dfa8eda12 Mon Sep 17 00:00:00 2001 From: subtly Date: Sun, 2 Feb 2014 08:11:53 -0600 Subject: [PATCH 1/2] #6 mavericks: expand [] operator due to clang bug on latest mavericks/xcode systems. --- libethereum/State.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/libethereum/State.cpp b/libethereum/State.cpp index 7d27520dd..e9e21d9fe 100644 --- a/libethereum/State.cpp +++ b/libethereum/State.cpp @@ -103,7 +103,10 @@ void State::ensureCached(Address _a, bool _requireMemory, bool _forceCreate) con TrieDB memdb(const_cast(&m_db), it->second.oldRoot()); // promise we won't alter the overlay! :) map& mem = it->second.takeMemory(); for (auto const& i: memdb) - mem[i.first] = RLP(i.second).toInt(); + if(mem.find(i.first)==mem.end()) + mem.insert(std::pair(i.first,RLP(i.second).toInt())); + else + mem.at(i.first) = RLP(i.second).toInt(); } } @@ -565,7 +568,11 @@ void State::executeBare(Transaction const& _t, Address _sender) m_cache[newAddress] = AddressState(0, 0, sha3(RLPNull)); auto& mem = m_cache[newAddress].takeMemory(); for (uint i = 0; i < _t.data.size(); ++i) - mem[i] = _t.data[i]; + if(mem.find(i)==mem.end()) + mem.insert(std::pair(i,_t.data[i])); + else + mem.at(i) = _t.data[i]; + subBalance(_sender, _t.value + _t.fee); addBalance(newAddress, _t.value); addBalance(m_currentBlock.coinbaseAddress, _t.fee); @@ -600,10 +607,14 @@ void State::execute(Address _myAddress, Address _txSender, u256 _txValue, u256 _ }; auto setMem = [&](u256 _n, u256 _v) { - if (_v) - myMemory[_n] = _v; - else - myMemory.erase(_n); + if (_v) { + if(myMemory.find(_n)==myMemory.end()) + myMemory.insert(std::pair(_n,_v)); + else + myMemory.at(_n) = _v; + } else { + myMemory.erase(_n); + } }; u256 curPC = 0; From 5843e6b7743a7cd3f172be1f9f6c614920f9ee13 Mon Sep 17 00:00:00 2001 From: subtly Date: Sun, 2 Feb 2014 08:15:16 -0600 Subject: [PATCH 2/2] spaces to tabs --- libethereum/State.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/libethereum/State.cpp b/libethereum/State.cpp index e9e21d9fe..fd3c68f98 100644 --- a/libethereum/State.cpp +++ b/libethereum/State.cpp @@ -103,10 +103,10 @@ void State::ensureCached(Address _a, bool _requireMemory, bool _forceCreate) con TrieDB memdb(const_cast(&m_db), it->second.oldRoot()); // promise we won't alter the overlay! :) map& mem = it->second.takeMemory(); for (auto const& i: memdb) - if(mem.find(i.first)==mem.end()) - mem.insert(std::pair(i.first,RLP(i.second).toInt())); - else - mem.at(i.first) = RLP(i.second).toInt(); + if(mem.find(i.first)==mem.end()) + mem.insert(std::pair(i.first,RLP(i.second).toInt())); + else + mem.at(i.first) = RLP(i.second).toInt(); } } @@ -568,10 +568,10 @@ void State::executeBare(Transaction const& _t, Address _sender) m_cache[newAddress] = AddressState(0, 0, sha3(RLPNull)); auto& mem = m_cache[newAddress].takeMemory(); for (uint i = 0; i < _t.data.size(); ++i) - if(mem.find(i)==mem.end()) - mem.insert(std::pair(i,_t.data[i])); - else - mem.at(i) = _t.data[i]; + if(mem.find(i)==mem.end()) + mem.insert(std::pair(i,_t.data[i])); + else + mem.at(i) = _t.data[i]; subBalance(_sender, _t.value + _t.fee); addBalance(newAddress, _t.value); @@ -608,13 +608,13 @@ void State::execute(Address _myAddress, Address _txSender, u256 _txValue, u256 _ auto setMem = [&](u256 _n, u256 _v) { if (_v) { - if(myMemory.find(_n)==myMemory.end()) - myMemory.insert(std::pair(_n,_v)); - else - myMemory.at(_n) = _v; + if(myMemory.find(_n)==myMemory.end()) + myMemory.insert(std::pair(_n,_v)); + else + myMemory.at(_n) = _v; } else { - myMemory.erase(_n); - } + myMemory.erase(_n); + } }; u256 curPC = 0;