X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/68655c26de20336ad3401d9250de95c2057ea278..0dfec40ad0e228992ff3095af88609068979496e:/src/smpi/internals/smpi_global.cpp diff --git a/src/smpi/internals/smpi_global.cpp b/src/smpi/internals/smpi_global.cpp index 0fa426029b..84c818a1e2 100644 --- a/src/smpi/internals/smpi_global.cpp +++ b/src/smpi/internals/smpi_global.cpp @@ -428,14 +428,14 @@ typedef void (*smpi_fortran_entry_point_type)(); static int smpi_run_entry_point(smpi_entry_point_type entry_point, std::vector args) { // copy C strings, we need them writable - std::vector args4argv(args.size()); - std::transform(begin(args), end(args), begin(args4argv), [](const std::string& s) { return xbt_strdup(s.c_str()); }); + std::vector* args4argv = new std::vector(args.size()); + std::transform(begin(args), end(args), begin(*args4argv), [](const std::string& s) { return xbt_strdup(s.c_str()); }); // take a copy of args4argv to keep reference of the allocated strings - const std::vector args2str(args4argv); - int argc = args4argv.size(); - args4argv.push_back(nullptr); - char** argv = args4argv.data(); + const std::vector args2str(*args4argv); + int argc = args4argv->size(); + args4argv->push_back(nullptr); + char** argv = args4argv->data(); simgrid::smpi::ActorExt::init(&argc, &argv); #if SMPI_IFORT @@ -450,9 +450,11 @@ static int smpi_run_entry_point(smpi_entry_point_type entry_point, std::vector