summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/proc.c b/proc.c
index 853eb0a..6f7bdb6 100644
--- a/proc.c
+++ b/proc.c
@@ -142,14 +142,15 @@ userinit(void)
int
growproc(int n)
{
+ uint sz = proc->sz;
if(n > 0){
- if(!allocuvm(proc->pgdir, (char *)proc->sz, n))
+ if(!(sz = allocuvm(proc->pgdir, sz, sz + n)))
return -1;
} else if(n < 0){
- if(!deallocuvm(proc->pgdir, (char *)(proc->sz + n), 0 - n))
+ if(!(sz = deallocuvm(proc->pgdir, sz, sz + n)))
return -1;
}
- proc->sz += n;
+ proc->sz = sz;
switchuvm(proc);
return 0;
}