diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-04-24 15:14:11 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-04-24 15:14:11 +0200 |
| commit | 5e69a69b8d9f780b823a5ac310cfcf6b1d80664c (patch) | |
| tree | e17827b12691f6301d73ac9a8f5a841256d09887 /src | |
| parent | 50a9aef1799dbb8f2070903fc0eb6d7c512d7170 (diff) | |
| download | box64-5e69a69b8d9f780b823a5ac310cfcf6b1d80664c.tar.gz box64-5e69a69b8d9f780b823a5ac310cfcf6b1d80664c.zip | |
Improved initial stack build
Diffstat (limited to 'src')
| -rwxr-xr-x | src/box64context.c | 6 | ||||
| -rwxr-xr-x | src/tools/box64stack.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/box64context.c b/src/box64context.c index 273fbbe3..909184f6 100755 --- a/src/box64context.c +++ b/src/box64context.c @@ -229,11 +229,11 @@ void FreeBox64Context(box64context_t** context) if(ctx->deferedInitList) free(ctx->deferedInitList); - free(ctx->argv); + /*free(ctx->argv);*/ - for (int i=0; i<ctx->envc; ++i) + /*for (int i=0; i<ctx->envc; ++i) free(ctx->envv[i]); - free(ctx->envv); + free(ctx->envv);*/ if(ctx->atfork_sz) { free(ctx->atforks); diff --git a/src/tools/box64stack.c b/src/tools/box64stack.c index 5ede282e..a820b983 100755 --- a/src/tools/box64stack.c +++ b/src/tools/box64stack.c @@ -176,8 +176,12 @@ void SetupInitialStack(x64emu_t *emu) Push(emu, 0); for (int i=emu->context->envc-1; i>=0; --i) Push(emu, p_envv[i]); + free(emu->context->envv); + emu->context->envv = (char**)R_RSP; Push(emu, 0); for (int i=emu->context->argc-1; i>=0; --i) Push(emu, p_argv[i]); + free(emu->context->argv); + emu->context->argv = (char**)R_RSP; Push(emu, emu->context->argc); } |