Merge pull request #9822 from ethereum/fix-ice-on-returning-string-literal-in-calldata

Mark string literals as not implicitly convertible to calldata arrays
This commit is contained in:
chriseth
2020-09-16 14:23:47 +02:00
committed by GitHub
5 changed files with 42 additions and 0 deletions
+1
View File
@@ -1408,6 +1408,7 @@ BoolResult StringLiteralType::isImplicitlyConvertibleTo(Type const& _convertTo)
return static_cast<size_t>(fixedBytes->numBytes()) >= m_value.size();
else if (auto arrayType = dynamic_cast<ArrayType const*>(&_convertTo))
return
arrayType->location() != DataLocation::CallData &&
arrayType->isByteArray() &&
!(arrayType->dataStoredIn(DataLocation::Storage) && arrayType->isPointer()) &&
!(arrayType->isString() && !util::validateUTF8(value()));