From 2795655e567c3cdbfe3d4815edd83b4f4cdbb542 Mon Sep 17 00:00:00 2001 From: Hristina Palikareva Date: Wed, 23 Apr 2014 20:20:33 +0100 Subject: Asserting that update lists have non-NULL roots within ReadExpr objects (update lists can have NULL roots, e.g. in MemoryObject instances with concrete contents, where root is allocated lazily only when the updates are required). Also checking whether array updates are typed correctly in UpdateList::extend() rather than in the constructor of UpdateNode (only for update lists with non-NULL roots). --- lib/Expr/Updates.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/Expr') diff --git a/lib/Expr/Updates.cpp b/lib/Expr/Updates.cpp index 107cf9d4..bf7049ba 100644 --- a/lib/Expr/Updates.cpp +++ b/lib/Expr/Updates.cpp @@ -88,6 +88,12 @@ UpdateList &UpdateList::operator=(const UpdateList &b) { } void UpdateList::extend(const ref &index, const ref &value) { + + if (root) { + assert(root->getDomain() == index->getWidth()); + assert(root->getRange() == value->getWidth()); + } + if (head) --head->refCount; head = new UpdateNode(head, index, value); ++head->refCount; -- cgit 1.4.1