X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c8e45d3f4873ef0485366452a118940b5e8df788..dc9b8feaddd53842f6204f4f24409b2382393fa9:/src/msg/msg_process.cpp diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index 2b22f1e36a..9cdb6057f5 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -71,22 +71,25 @@ msg_process_t MSG_process_create_with_environment(const char *name, xbt_main_fun if (code) function = simgrid::xbt::wrap_main(code, argc, static_cast(argv)); - simgrid::s4u::ActorPtr actor = simgrid::s4u::Actor::init(std::move(name), host); - actor->extension()->set_user_data(data); - - xbt_dict_cursor_t cursor = nullptr; - char* key; - char* value; - xbt_dict_foreach (properties, cursor, key, value) - actor->set_property(key, value); - xbt_dict_free(&properties); + simgrid::s4u::ActorPtr actor; try { - actor->start(std::move(function)); + if (data != nullptr) { + actor = simgrid::s4u::Actor::init(std::move(name), host); + actor->extension()->set_user_data(data); + xbt_dict_cursor_t cursor = nullptr; + char* key; + char* value; + xbt_dict_foreach (properties, cursor, key, value) + actor->set_property(key, value); + actor->start(std::move(function)); + } else + actor = simgrid::s4u::Actor::create(std::move(name), host, std::move(function)); } catch (simgrid::HostFailureException const&) { xbt_die("Could not launch a new process on failed host %s.", host->get_cname()); } + xbt_dict_free(&properties); for (int i = 0; i != argc; ++i) xbt_free(argv[i]); xbt_free(argv); @@ -178,7 +181,7 @@ msg_process_t MSG_process_self() } smx_context_t MSG_process_get_smx_ctx(msg_process_t process) { // deprecated -- smx_context_t should die afterward - return process->get_impl()->context_; + return process->get_impl()->context_.get(); } /** @brief Add a function to the list of "on_exit" functions for the current process. * The on_exit functions are the functions executed when your process is killed.