diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-11-08 10:31:48 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-11-08 10:31:48 -0800 |
commit | 4ecab1821ed7609d35f2c9509cb045dc79606e8c (patch) | |
tree | c5f7f3641fd24fac4c36139a81fcddd4dab188e5 /020run.cc | |
parent | f4647409b5fa658e463424c0a8249a4d72405d59 (diff) | |
download | mu-4ecab1821ed7609d35f2c9509cb045dc79606e8c.tar.gz |
3653
Don't crash on bad types. I need to be more careful in distinguishing between the two causes of constraint violations: bad input and internal bugs. Maybe I should create a second assert() to indicate "this shouldn't really be an assert, but I'm too lazy to think about it right now."
Diffstat (limited to '020run.cc')
-rw-r--r-- | 020run.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/020run.cc b/020run.cc index de957dbb..b154b37d 100644 --- a/020run.cc +++ b/020run.cc @@ -335,7 +335,10 @@ int size_of(const type_tree* type) { // End size_of(type) Atom Special-cases } else { - assert(type->left->atom); + if (!type->left->atom) { + raise << "invalid type " << to_string(type) << '\n' << end(); + return 0; + } if (type->left->name == "address") return 1; // End size_of(type) Non-atom Special-cases } |