rem: *parameters = newArray; (*count)++;
add: if (status != NO_PARAMETER) { driver_parameter *newParameter;
context: parse_parameters(struct driver_parameter **parameters, int *count, char **pos, int32 level){	if (level > MAX_SETTINGS_LEVEL)		return B_LINK_LIMIT;	while (true) {		struct driver_parameter *newArray, *parameter;		status_t status;		newArray = realloc(*parameters, (*count + 1) * sizeof(struct driver_parameter));		if (newArray == NULL)			return B_NO_MEMORY;		parameter = &newArray[*count];		status = parse_parameter(parameter, pos, level);		if (status < B_OK)			return status;		*parameters = newArray;		(*count)++;		// check for level beginning and end		if (**pos == '{') {			// if we go a level deeper, just start all over again...			(*pos)++;			status = parse_parameters(&parameter->parameters, &parameter->parameter_count, pos, level + 1);			if (status < B_OK)				return status;		}		if ((**pos == '}' && level > 0)			|| (**pos == '\0' && level == 0)) {			// take the closing bracket from the stack			(*pos)++;			return B_OK;		}		// obviously, something has gone wrong		if (**pos == '}' || **pos == '\0')			return B_ERROR;	}}