File tree Expand file tree Collapse file tree 2 files changed +7
-8
lines changed Expand file tree Collapse file tree 2 files changed +7
-8
lines changed Original file line number Diff line number Diff line change @@ -323,17 +323,16 @@ bool address_of_aware_replace_symbolt::replace(exprt &dest) const
323
323
bool address_of_aware_replace_symbolt::replace_symbol_expr (
324
324
symbol_exprt &s) const
325
325
{
326
- expr_mapt::const_iterator it = expr_map.find (s.get_identifier ());
327
-
328
- if (it == expr_map.end ())
326
+ symbol_exprt s_copy = s;
327
+ if (unchecked_replace_symbolt::replace_symbol_expr (s_copy))
329
328
return true ;
330
329
331
- const exprt &e = it->second ;
332
-
333
- if (require_lvalue && !is_lvalue (e))
330
+ if (require_lvalue && !is_lvalue (s_copy))
334
331
return true ;
335
332
336
- static_cast <exprt &>(s) = e;
333
+ // Note s_copy is no longer a symbol_exprt due to the replace operation,
334
+ // and after this line `s` won't be either
335
+ s = s_copy;
337
336
338
337
return false ;
339
338
}
Original file line number Diff line number Diff line change @@ -104,7 +104,7 @@ class unchecked_replace_symbolt : public replace_symbolt
104
104
105
105
void insert (const symbol_exprt &old_expr, const exprt &new_expr);
106
106
107
- private :
107
+ protected :
108
108
bool replace_symbol_expr (symbol_exprt &dest) const override ;
109
109
};
110
110
You can’t perform that action at this time.
0 commit comments