diff options
Diffstat (limited to 'packages/contracts/src')
-rw-r--r-- | packages/contracts/src/contracts/current/test/TestLibMem/TestLibMem.sol | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/packages/contracts/src/contracts/current/test/TestLibMem/TestLibMem.sol b/packages/contracts/src/contracts/current/test/TestLibMem/TestLibMem.sol index 0c6f8fbc9..18deede4c 100644 --- a/packages/contracts/src/contracts/current/test/TestLibMem/TestLibMem.sol +++ b/packages/contracts/src/contracts/current/test/TestLibMem/TestLibMem.sol @@ -19,12 +19,33 @@ pragma solidity ^0.4.24; import "../../utils/LibMem/LibMem.sol"; -import "../../utils/LibBytes/LibBytes.sol"; contract TestLibMem is - LibMem, - LibBytes + LibMem { + function testMemcpy( + bytes mem, ///< Memory contents we want to apply memcpy to + uint256 dest, + uint256 source, + uint256 length + ) + public // not external, we need input in memory + pure + returns (bytes) + { + // Sanity check. Overflows are not checked. + require(source + length <= mem.length); + require(dest + length <= mem.length); + + // Get pointer to memory contents + uint256 offset = getMemAddress(mem) + 32; + + // Execute memcpy adjusted for memory array location + memcpy(offset + dest, offset + source, length); + + // Return modified memory contents + return mem; + } function test1() external |