mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Changelog and review suggestions.
This commit is contained in:
parent
7660736aa2
commit
bff8fc23e6
@ -9,6 +9,8 @@ Features:
|
||||
* Metadata: Do not include platform in the version number.
|
||||
* Metadata: Add option to store sources as literal content.
|
||||
* Code generator: Extract array utils into low-level functions.
|
||||
* Code generator: Internal errors (array out of bounds, etc.) now cause a reversion by using an invalid
|
||||
instruction (0xfe) instead of an invalid jump. Invalid jump is still kept for explicit throws.
|
||||
|
||||
Bugfixes:
|
||||
* Code generator: Allow recursive structs.
|
||||
|
@ -397,7 +397,7 @@ Currently, Solidity automatically generates a runtime exception in the following
|
||||
#. If you call a zero-initialized variable of internal function type.
|
||||
|
||||
Internally, Solidity performs an "invalid jump" when a user-provided exception is thrown. In contrast, it performs an invalid operation
|
||||
(code ``0xfe``) if a runtime exception is encountered. In both cases, this causes
|
||||
(instruction ``0xfe``) if a runtime exception is encountered. In both cases, this causes
|
||||
the EVM to revert all changes made to the state. The reason for this is that there is no safe way to continue execution, because an expected effect
|
||||
did not occur. Because we want to retain the atomicity of transactions, the safest thing to do is to revert all changes and make the whole transaction
|
||||
(or at least call) without effect.
|
||||
|
@ -919,7 +919,7 @@ eth::AssemblyPointer ContractCompiler::cloneRuntime()
|
||||
//Propagate error condition (if DELEGATECALL pushes 0 on stack).
|
||||
a << Instruction::ISZERO;
|
||||
a << Instruction::ISZERO;
|
||||
eth::AssemblyItem afterTag = a.appendJumpI();
|
||||
eth::AssemblyItem afterTag = a.appendJumpI().tag();
|
||||
a << Instruction::INVALID << afterTag;
|
||||
//@todo adjust for larger return values, make this dynamic.
|
||||
a << u256(0x20) << u256(0) << Instruction::RETURN;
|
||||
|
Loading…
Reference in New Issue
Block a user