diff --git a/kernel/tasks.c b/kernel/tasks.c index 07edccbb..9c1e103f 100644 --- a/kernel/tasks.c +++ b/kernel/tasks.c @@ -568,13 +568,13 @@ static int load_task(load_args_t* largs) return -ENOMEM; } memset(task_table[curr_task->id].fildes_table, 0x00, sizeof(filp_t)*NR_OPEN); - for (fd_i = 0; fd_i < 3; fd_i++) + for (fd_i = 0; fd_i < 3; fd_i++) { task_table[curr_task->id].fildes_table[fd_i] = kmalloc(sizeof(fildes_t)); + task_table[curr_task->id].fildes_table[fd_i]->count = 1; + } task_table[curr_task->id].fildes_table[0]->node = findnode_fs("/dev/stdin"); task_table[curr_task->id].fildes_table[1]->node = findnode_fs("/dev/stdout"); task_table[curr_task->id].fildes_table[2]->node = findnode_fs("/dev/stderr"); - for (fd_i = 0; fd_i < 3; fd_i++) - task_table[curr_task->id].fildes_table[fd_i]->count = 1; } spinlock_irqsave_unlock(&table_lock);