diff --git a/userprog/populate_stack.c b/userprog/populate_stack.c index 36acb8c912794da28d82ce53ce5614a7d6e86178..d66e30eacb75d47585caa2543ee804045e150484 100644 --- a/userprog/populate_stack.c +++ b/userprog/populate_stack.c @@ -24,25 +24,27 @@ void populate_stack(void* stack_pointer, int argc, char** argv) { memcpy(*stack_pointer, argv[i], strlen(argv[i]) + 1); } - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 + move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 (*(int *)(*stack_pointer)) = 0;//sentinel i = argc; while (--i >= 0) { - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //32bit Moves the stack pointer back 4 + move_stack_pointer(*stack_pointer, -4); //32bit Moves the stack pointer back 4 (*(uint32_t **)(*stack_pointer)) = arr[i]; } - - *stack_pointer = move_stack_pointer(*stack_pointer, -4); - - (*(uintptr_t **)(*stack_pointer)) = *stack_pointer = move_stack_pointer(*stack_pointer, 4); //Moves the stack pointer forwards 4 - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 + + move_stack_pointer(*stack_pointer, -4); + move_stack_pointer(*stack_pointer, 4); //Moves the stack pointer forwards 4 + // TODO: Test if still required in later version + + (*(uintptr_t **)(*stack_pointer)) = *stack_pointer + move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 *(int *)(*stack_pointer) = argc; - *stack_pointer = move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 + move_stack_pointer(*stack_pointer, -4); //Moves the stack pointer back 4 (*(int *)(*stack_pointer)) = 0; }