diff --git a/substrate/srml/contract/src/exec.rs b/substrate/srml/contract/src/exec.rs
index 7830a95a79..0c0e3d59d8 100644
--- a/substrate/srml/contract/src/exec.rs
+++ b/substrate/srml/contract/src/exec.rs
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Substrate. If not, see .
-use super::{CodeOf, MaxDepth, ContractAddressFor, Module, Trait, Event, RawEvent};
+use super::{MaxDepth, ContractAddressFor, Module, Trait, Event, RawEvent};
use account_db::{AccountDb, OverlayAccountDb};
use gas::GasMeter;
use vm;
@@ -60,7 +60,7 @@ impl<'a, T: Trait> ExecutionContext<'a, T> {
return Err("not enough gas to pay base call fee");
}
- let dest_code = >::get(&dest);
+ let dest_code = self.overlay.get_code(&dest);
let (change_set, events) = {
let mut overlay = OverlayAccountDb::new(&self.overlay);
@@ -124,8 +124,9 @@ impl<'a, T: Trait> ExecutionContext<'a, T> {
}
let dest = T::DetermineContractAddress::contract_address_for(init_code, data, &self.self_account);
- if >::exists(&dest) {
- // TODO: Is it enough?
+
+ if !self.overlay.get_code(&dest).is_empty() {
+ // It should be enough to check only the code.
return Err("contract already exists");
}