Skip to content

Commit 54a1c67

Browse files
author
Daniel Kroening
committed
better typing in object_descriptor_exprt::root_object()
This improves memory safety.
1 parent d5b0b24 commit 54a1c67

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/util/std_expr.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,11 +218,14 @@ const exprt &object_descriptor_exprt::root_object() const
218218
{
219219
const exprt *p = &object();
220220

221-
while(p->id() == ID_member || p->id() == ID_index)
221+
while(true)
222222
{
223-
DATA_INVARIANT(
224-
p->has_operands(), "member and index expressions have operands");
225-
p = &p->op0();
223+
if(p->id() == ID_member)
224+
p = &to_member_expr(*p).compound();
225+
else if(p->id() == ID_index)
226+
p = &to_index_expr(*p).array();
227+
else
228+
break;
226229
}
227230

228231
return *p;

0 commit comments

Comments
 (0)