mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 00:11:00 +00:00
[pr17595] Fix a use after free.
Destroying the codegen also frees the path of the created object. Copy the path to a std::string. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192787 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d1a4f579bf
commit
648a2e6714
@ -427,9 +427,14 @@ static ld_plugin_status all_symbols_read_hook(void) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
const char *objPath;
|
||||
if (lto_codegen_compile_to_file(code_gen, &objPath)) {
|
||||
(*message)(LDPL_ERROR, "Could not produce a combined object file\n");
|
||||
|
||||
std::string ObjPath;
|
||||
{
|
||||
const char *Temp;
|
||||
if (lto_codegen_compile_to_file(code_gen, &Temp)) {
|
||||
(*message)(LDPL_ERROR, "Could not produce a combined object file\n");
|
||||
}
|
||||
ObjPath = Temp;
|
||||
}
|
||||
|
||||
lto_codegen_dispose(code_gen);
|
||||
@ -441,9 +446,9 @@ static ld_plugin_status all_symbols_read_hook(void) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((*add_input_file)(objPath) != LDPS_OK) {
|
||||
if ((*add_input_file)(ObjPath.c_str()) != LDPS_OK) {
|
||||
(*message)(LDPL_ERROR, "Unable to add .o file to the link.");
|
||||
(*message)(LDPL_ERROR, "File left behind in: %s", objPath);
|
||||
(*message)(LDPL_ERROR, "File left behind in: %s", ObjPath.c_str());
|
||||
return LDPS_ERR;
|
||||
}
|
||||
|
||||
@ -454,7 +459,7 @@ static ld_plugin_status all_symbols_read_hook(void) {
|
||||
}
|
||||
|
||||
if (options::obj_path.empty())
|
||||
Cleanup.push_back(objPath);
|
||||
Cleanup.push_back(ObjPath);
|
||||
|
||||
return LDPS_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user