Skip to content

Commit 946f870

Browse files
committed
Fix missing case reading variable-length arrays with their actual runtime length.
1 parent fb348fa commit 946f870

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/goto-programs/interpreter.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,12 +1033,12 @@ typet interpretert::concretise_type(const typet &type) const
10331033
computed_size[0]>0 &&
10341034
computed_size[0]<=max_allowed_dynamic_array_size)
10351035
{
1036-
message->result() << "Concretised array with size " << computed_size[0] << "\n" << messaget::eom;
1036+
message->result() << "Concretised array with size " << computed_size[0] << messaget::eom;
10371037
return array_typet(type.subtype(),
10381038
constant_exprt::integer_constant(computed_size[0].to_ulong()));
10391039
}
10401040
else {
1041-
message->error() << "Failed to concretise variable array\n" << messaget::eom;
1041+
message->error() << "Failed to concretise variable array" << messaget::eom;
10421042
}
10431043
}
10441044
return type;
@@ -1160,9 +1160,10 @@ unsigned interpretert::get_size(const typet &type) const
11601160

11611161
unsigned subtype_size=get_size(type.subtype());
11621162

1163-
mp_integer i;
1164-
if(!to_integer(size_expr, i))
1165-
return subtype_size*integer2unsigned(i);
1163+
std::vector<mp_integer> i;
1164+
evaluate(size_expr,i);
1165+
if(i.size()==1)
1166+
return subtype_size*integer2unsigned(i[0]);
11661167
else
11671168
return subtype_size;
11681169
}

0 commit comments

Comments
 (0)