about summary refs log tree commit diff
path: root/src/rt/rust_task.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt/rust_task.cpp')
-rw-r--r--src/rt/rust_task.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp
index e937bd42ffc..e18259fba60 100644
--- a/src/rt/rust_task.cpp
+++ b/src/rt/rust_task.cpp
@@ -171,7 +171,12 @@ rust_task::start(uintptr_t spawnee_fn,
     src += 1;                  // spawn-call task slot
     src += 1;                  // spawn-call closure-or-obj slot
 
-    *spp-- = (uintptr_t) *src;       // vec
+    spp -= (args_size / sizeof(uintptr_t)) - 1;
+    memmove(spp, src, args_size);
+    spp--;
+
+    //*spp-- = (uintptr_t) *src;       // vec
+    
     *spp-- = (uintptr_t) 0x0;        // closure-or-obj
     *spp-- = (uintptr_t) this;       // task
     *spp-- = (uintptr_t) dummy_ret;  // output address
@@ -179,7 +184,6 @@ rust_task::start(uintptr_t spawnee_fn,
     I(dom, spp == align_down(spp));
     *spp-- = (uintptr_t) (uintptr_t) spawnee_fn;
 
-
     *spp-- = (uintptr_t) 0x0;        // retp
 
     *spp-- = (uintptr_t) rust_new_exit_task_glue;