Commit efd8e0e89ceeb6cd303b56c917ef63c8e68da7ca
only check `length` where lenght could be 0
wanderer committed on 9/4/2016, 5:07:00 PMParent: d0e498dbd1d35572564b7372af00a0542f585684
Files changed
interface.js | changed |
interface.js | ||
---|---|---|
@@ -163,10 +163,12 @@ | ||
163 | 163 | */ |
164 | 164 | callDataCopy (offset, dataOffset, length) { |
165 | 165 | this.takeGas(3 + Math.ceil(length / 32) * 3) |
166 | 166 | |
167 | - const callData = this.environment.callData.slice(dataOffset, dataOffset + length) | |
168 | - this.setMemory(offset, length, callData) | |
167 | + if (length) { | |
168 | + const callData = this.environment.callData.slice(dataOffset, dataOffset + length) | |
169 | + this.setMemory(offset, length, callData) | |
170 | + } | |
169 | 171 | } |
170 | 172 | |
171 | 173 | /** |
172 | 174 | * Copys the input data in current environment to memory. This pertains to |
@@ -198,10 +200,12 @@ | ||
198 | 200 | */ |
199 | 201 | codeCopy (resultOffset, codeOffset, length) { |
200 | 202 | this.takeGas(3 + Math.ceil(length / 32) * 3) |
201 | 203 | |
202 | - const code = this.environment.code.slice(codeOffset, codeOffset + length) | |
203 | - this.setMemory(resultOffset, length, code) | |
204 | + if (length) { | |
205 | + const code = this.environment.code.slice(codeOffset, codeOffset + length) | |
206 | + this.setMemory(resultOffset, length, code) | |
207 | + } | |
204 | 208 | } |
205 | 209 | |
206 | 210 | /** |
207 | 211 | * Get size of an account’s code. |
@@ -225,12 +229,14 @@ | ||
225 | 229 | */ |
226 | 230 | externalCodeCopy (addressOffset, resultOffset, codeOffset, length) { |
227 | 231 | this.takeGas(20 + Math.ceil(length / 32) * 3) |
228 | 232 | |
229 | - const address = Address.fromMemory(this.getMemory(addressOffset, ADDRESS_SIZE_BYTES)) | |
230 | - let code = this.environment.getCode(address) | |
231 | - code = code.slice(codeOffset, codeOffset + length) | |
232 | - this.setMemory(resultOffset, length, code) | |
233 | + if (length) { | |
234 | + const address = Address.fromMemory(this.getMemory(addressOffset, ADDRESS_SIZE_BYTES)) | |
235 | + let code = this.environment.getCode(address) | |
236 | + code = code.slice(codeOffset, codeOffset + length) | |
237 | + this.setMemory(resultOffset, length, code) | |
238 | + } | |
233 | 239 | } |
234 | 240 | |
235 | 241 | /** |
236 | 242 | * Gets price of gas in current environment. |
@@ -515,12 +521,10 @@ | ||
515 | 521 | return new Uint8Array(this.module.exports.memory, offset, length) |
516 | 522 | } |
517 | 523 | |
518 | 524 | setMemory (offset, length, value) { |
519 | - if (value.length) { | |
520 | - const memory = new Uint8Array(this.module.exports.memory, offset, length) | |
521 | - memory.set(value) | |
522 | - } | |
525 | + const memory = new Uint8Array(this.module.exports.memory, offset, length) | |
526 | + memory.set(value) | |
523 | 527 | } |
524 | 528 | |
525 | 529 | /* |
526 | 530 | * Takes gas from the tank. Only needs to check if there's gas left to be taken, |
Built with git-ssb-web