rem: context->fds = (file_descriptor **)malloc(sizeof(struct file_descriptor *) * tableSize);
add: context->fds = (file_descriptor **)malloc(sizeof(struct file_descriptor *) * tableSize + tableSize / 8);
context: vfs_new_io_context(void *_parentContext){	size_t tableSize;	struct io_context *context;	struct io_context *parentContext;	context = (io_context *)malloc(sizeof(struct io_context));	if (context == NULL)		return NULL;	memset(context, 0, sizeof(struct io_context));	parentContext = (struct io_context *)_parentContext;	if (parentContext)		tableSize = parentContext->table_size;	else		tableSize = DEFAULT_FD_TABLE_SIZE;	context->fds = (file_descriptor **)malloc(sizeof(struct file_descriptor *) * tableSize);	if (context->fds == NULL) {		free(context);		return NULL;	}	memset(context->fds, 0, sizeof(struct file_descriptor *) * tableSize);	if (mutex_init(&context->io_mutex, "I/O context") < 0) {		free(context->fds);		free(context);		return NULL;	}	// Copy all parent files which don't have the O_CLOEXEC flag set	if (parentContext) {		size_t i;		mutex_lock(&parentContext->io_mutex);		context->cwd = parentContext->cwd;		if (context->cwd)			inc_vnode_ref_count(context->cwd);		for (i = 0; i < tableSize; i++) {			struct file_descriptor *descriptor = parentContext->fds[i];			if (descriptor != NULL && (descriptor->open_mode & O_CLOEXEC) == 0) {				context->fds[i] = descriptor;				context->num_used_fds++;				atomic_add(&descriptor->ref_count, 1);				atomic_add(&descriptor->open_count, 1);			}		}		mutex_unlock(&parentContext->io_mutex);	} else {		context->cwd = sRoot;		if (context->cwd)			inc_vnode_ref_count(context->cwd);	}	context->table_size = tableSize;	list_init(&context->node_monitors);	context->max_monitors = MAX_NODE_MONITORS;	return context;}