X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8c93aab46d2f1dd9bfff43471ea78a9369aa4762..d1f1e22acb2e2342b535c3847e804b4a5fee3167:/src/simix/libsmx.cpp diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 2735d02016..794909f9e5 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -15,6 +15,8 @@ #include +#include + #include "src/mc/mc_replay.h" #include "smx_private.h" #include "src/mc/mc_forward.hpp" @@ -377,9 +379,14 @@ smx_process_t simcall_process_create(const char *name, { if (name == nullptr) name = ""; - return (smx_process_t) simcall_BODY_process_create(name, code, data, hostname, - kill_time, argc, argv, properties, - auto_restart); + auto wrapped_code = simgrid::xbt::wrapMain(code, argc, argv); + for (int i = 0; i != argc; ++i) + xbt_free(argv[i]); + xbt_free(argv); + smx_process_t res = simcall_process_create(name, + std::move(wrapped_code), + data, hostname, kill_time, properties, auto_restart); + return res; } /** @@ -1121,7 +1128,7 @@ xbt_dict_t simcall_storage_get_content(smx_storage_t storage) void simcall_run_kernel(std::function const& code) { - return simcall_BODY_run_kernel((void*) &code); + return simcall_BODY_run_kernel(&code); } int simcall_mc_random(int min, int max) {