about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-04-24 15:14:11 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-04-24 15:14:11 +0200
commit5e69a69b8d9f780b823a5ac310cfcf6b1d80664c (patch)
treee17827b12691f6301d73ac9a8f5a841256d09887 /src
parent50a9aef1799dbb8f2070903fc0eb6d7c512d7170 (diff)
downloadbox64-5e69a69b8d9f780b823a5ac310cfcf6b1d80664c.tar.gz
box64-5e69a69b8d9f780b823a5ac310cfcf6b1d80664c.zip
Improved initial stack build
Diffstat (limited to 'src')
-rwxr-xr-xsrc/box64context.c6
-rwxr-xr-xsrc/tools/box64stack.c4
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);
 }