There is no need for argc and argv to be new, as long types match
Consider the following unlikely sequence of events: $ cat ~/tmp/can-delete/main.c int main (int argc, char **argv) { return 0; } $ goto-cc main.c -o main.goto $ cbmc main.goto --function main CBMC version 5.11 (cbmc-5.11-881-gd52cd0d1e-dirty) 64-bit x86_64 linux Reading GOTO program from file Reading: /home/martin/tmp/can-delete/main.goto failed to insert argc symbol SUPPORT FUNCTION GENERATION ERROR argc and argv both exist and it is fine to re-use them. If the addition fails it will throw an exception, the .second bool is only false in the case they already exist which is likely harmless.
This commit is contained in:
parent
1c309e1b23
commit
2bee6b195f
|
@ -268,10 +268,12 @@ bool generate_ansi_c_start_function(
|
|||
argc_symbol.is_lvalue = true;
|
||||
argc_symbol.mode = ID_C;
|
||||
|
||||
if(!symbol_table.insert(std::move(argc_symbol)).second)
|
||||
auto r = symbol_table.insert(argc_symbol);
|
||||
if(!r.second && r.first != argc_symbol)
|
||||
{
|
||||
messaget message(message_handler);
|
||||
message.error() << "failed to insert argc symbol" << messaget::eom;
|
||||
message.error() << "argc already exists but is not usable"
|
||||
<< messaget::eom;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -295,10 +297,12 @@ bool generate_ansi_c_start_function(
|
|||
argv_symbol.is_lvalue = true;
|
||||
argv_symbol.mode = ID_C;
|
||||
|
||||
if(!symbol_table.insert(std::move(argv_symbol)).second)
|
||||
auto r = symbol_table.insert(argv_symbol);
|
||||
if(!r.second && r.first != argv_symbol)
|
||||
{
|
||||
messaget message(message_handler);
|
||||
message.error() << "failed to insert argv symbol" << messaget::eom;
|
||||
message.error() << "argv already exists but is not usable"
|
||||
<< messaget::eom;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue