Guard encoding crashes with assertions.

This commit is contained in:
chriseth 2016-09-01 19:31:17 +02:00
parent b5d941d3d9
commit 4134834ff3
2 changed files with 9 additions and 0 deletions

View File

@ -39,6 +39,7 @@ Bugfixes:
* JSON AST: nodes were added at wrong parent * JSON AST: nodes were added at wrong parent
* Why3 translator: crash fix for exponentiation * Why3 translator: crash fix for exponentiation
* Type Checker: Fallback function cannot return data anymore. * Type Checker: Fallback function cannot return data anymore.
* Code Generator: Fix crash when sha3() was used on unsupported types.
Lots of changes to the documentation mainly by voluntary external contributors. Lots of changes to the documentation mainly by voluntary external contributors.

View File

@ -160,7 +160,15 @@ void CompilerUtils::encodeToMemory(
TypePointers targetTypes = _targetTypes.empty() ? _givenTypes : _targetTypes; TypePointers targetTypes = _targetTypes.empty() ? _givenTypes : _targetTypes;
solAssert(targetTypes.size() == _givenTypes.size(), ""); solAssert(targetTypes.size() == _givenTypes.size(), "");
for (TypePointer& t: targetTypes) for (TypePointer& t: targetTypes)
{
solAssert(
t->mobileType() &&
t->mobileType()->interfaceType(_encodeAsLibraryTypes) &&
t->mobileType()->interfaceType(_encodeAsLibraryTypes)->encodingType(),
"Encoding type " + t->toString() + " not yet implemented."
);
t = t->mobileType()->interfaceType(_encodeAsLibraryTypes)->encodingType(); t = t->mobileType()->interfaceType(_encodeAsLibraryTypes)->encodingType();
}
// Stack during operation: // Stack during operation:
// <v1> <v2> ... <vn> <mem_start> <dyn_head_1> ... <dyn_head_r> <end_of_mem> // <v1> <v2> ... <vn> <mem_start> <dyn_head_1> ... <dyn_head_r> <end_of_mem>