@@ -248,7 +248,8 @@ exprt allocate_dynamic_object(
248
248
// / \param symbol_table: symbol table
249
249
// / \param loc: location in the source
250
250
// / \param output_code: code block to which the necessary code is added
251
- void allocate_dynamic_object_with_decl (
251
+ // / \return the dynamic object created
252
+ exprt allocate_dynamic_object_with_decl (
252
253
const exprt &target_expr,
253
254
symbol_table_baset &symbol_table,
254
255
const source_locationt &loc,
@@ -257,8 +258,7 @@ void allocate_dynamic_object_with_decl(
257
258
std::vector<const symbolt *> symbols_created;
258
259
code_blockt tmp_block;
259
260
const typet &allocate_type=target_expr.type ().subtype ();
260
- // We will not use the malloc site and can safely ignore it
261
- (void ) allocate_dynamic_object (
261
+ const exprt dynamic_object = allocate_dynamic_object (
262
262
target_expr,
263
263
allocate_type,
264
264
symbol_table,
@@ -278,6 +278,7 @@ void allocate_dynamic_object_with_decl(
278
278
279
279
for (const exprt &code : tmp_block.operands ())
280
280
output_code.add (to_code (code));
281
+ return dynamic_object;
281
282
}
282
283
283
284
// / Installs a new symbol in the symbol table, pushing the corresponding symbolt
@@ -701,11 +702,12 @@ static bool add_nondet_string_pointer_initialization(
701
702
if (!struct_type.has_component (" data" ) || !struct_type.has_component (" length" ))
702
703
return true ;
703
704
704
- allocate_dynamic_object_with_decl (expr, symbol_table, loc, code);
705
+ const exprt malloc_site =
706
+ allocate_dynamic_object_with_decl (expr, symbol_table, loc, code);
705
707
706
708
code.add (
707
709
initialize_nondet_string_struct (
708
- dereference_exprt (expr , struct_type),
710
+ dereference_exprt (malloc_site , struct_type),
709
711
max_nondet_string_length,
710
712
loc,
711
713
symbol_table,
0 commit comments