Chromium Code Reviews| Index: runtime/vm/object.cc |
| diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc |
| index d95d307668ba37b42e9980ae11f4ba5dfb406bae..31a8bfdc1beab180c1317f8e71140bb438589c9d 100644 |
| --- a/runtime/vm/object.cc |
| +++ b/runtime/vm/object.cc |
| @@ -8698,6 +8698,25 @@ void LibraryPrefixIterator::Advance() { |
| } |
| +static void ReportTooManyImports(const Library& lib) { |
| + String& url = String::Handle(lib.url()); |
|
siva
2015/06/09 01:29:02
const String& url
rmacnak
2015/06/09 17:47:11
Done.
|
| + Report::MessageF(Report::kError, |
| + Script::Handle(lib.LookupScript(url)), |
| + Scanner::kNoSourcePos, |
| + "too many imports in library '%s'", |
| + url.ToCString()); |
| + UNREACHABLE(); |
| +} |
| + |
| + |
| +void Library::set_num_imports(intptr_t value) const { |
| + if (!Utils::IsUint(16, value)) { |
| + ReportTooManyImports(*this); |
| + } |
| + StoreNonPointer(&raw_ptr()->num_imports_, value); |
| +} |
| + |
| + |
| void Library::SetName(const String& name) const { |
| // Only set name once. |
| ASSERT(!Loaded()); |
| @@ -10294,6 +10313,9 @@ void LibraryPrefix::set_imports(const Array& value) const { |
| void LibraryPrefix::set_num_imports(intptr_t value) const { |
| + if (!Utils::IsUint(16, value)) { |
| + ReportTooManyImports(Library::Handle(importer())); |
| + } |
| StoreNonPointer(&raw_ptr()->num_imports_, value); |
| } |
| @@ -15568,6 +15590,7 @@ void TypeParameter::set_parameterized_class(const Class& value) const { |
| void TypeParameter::set_index(intptr_t value) const { |
| ASSERT(value >= 0); |
| + ASSERT(Utils::IsInt(16, value)); |
| StoreNonPointer(&raw_ptr()->index_, value); |
| } |