SYS_G_LIST_FOREACH(result->props, temp_glist, temp_section_prop) {
if (parse_input_device_property(temp_section_prop, &input_dev_info) < 0)
- return -EPERM;
+ goto out_parsing_fail;
}
if (input_dev_info->input_device_default == 1) {
if (is_default_input_device_duplicated(input_dev_info->input_device_type))
- return -EPERM;
+ goto out_parsing_fail;
}
ret = input_devman_add_device(input_dev_info->input_device_type,
input_dev_info->input_device_id,
input_dev_info->input_device_default,
input_dev_info->input_device_name);
+ free(input_dev_info->input_device_name);
free(input_dev_info);
if (ret < 0)
return ret;
return 0;
+
+out_parsing_fail:
+ free(input_dev_info->input_device_name);
+ free(input_dev_info);
+ return -EPERM;
}
int input_parser_init(void)