@@ -248,7 +248,8 @@ exprt allocate_dynamic_object(
248248// / \param symbol_table: symbol table
249249// / \param loc: location in the source
250250// / \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 (
252253 const exprt &target_expr,
253254 symbol_table_baset &symbol_table,
254255 const source_locationt &loc,
@@ -257,8 +258,7 @@ void allocate_dynamic_object_with_decl(
257258 std::vector<const symbolt *> symbols_created;
258259 code_blockt tmp_block;
259260 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 (
262262 target_expr,
263263 allocate_type,
264264 symbol_table,
@@ -278,6 +278,7 @@ void allocate_dynamic_object_with_decl(
278278
279279 for (const exprt &code : tmp_block.operands ())
280280 output_code.add (to_code (code));
281+ return dynamic_object;
281282}
282283
283284// / Installs a new symbol in the symbol table, pushing the corresponding symbolt
@@ -701,11 +702,12 @@ static bool add_nondet_string_pointer_initialization(
701702 if (!struct_type.has_component (" data" ) || !struct_type.has_component (" length" ))
702703 return true ;
703704
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);
705707
706708 code.add (
707709 initialize_nondet_string_struct (
708- dereference_exprt (expr , struct_type),
710+ dereference_exprt (malloc_site , struct_type),
709711 max_nondet_string_length,
710712 loc,
711713 symbol_table,
0 commit comments