diff --git a/frontend/info/core_info.c b/frontend/info/core_info.c index 2c6252f5d2..5db7667c2d 100644 --- a/frontend/info/core_info.c +++ b/frontend/info/core_info.c @@ -57,6 +57,8 @@ static void core_info_list_resolve_all_firmware(core_info_list_t *core_info_list { size_t i; unsigned c; + + for (i = 0; i < core_info_list->count; i++) { core_info_t *info = &core_info_list->list[i]; @@ -71,7 +73,8 @@ static void core_info_list_resolve_all_firmware(core_info_list_t *core_info_list info->firmware = (core_info_firmware_t*)calloc(count, sizeof(*info->firmware)); if (!info->firmware) continue; - + + for (c = 0; c < count; c++) { char path_key[64], desc_key[64]; @@ -81,6 +84,7 @@ static void core_info_list_resolve_all_firmware(core_info_list_t *core_info_list config_get_string(info->data, path_key, &info->firmware[c].path); config_get_string(info->data, desc_key, &info->firmware[c].desc); } + } } @@ -359,18 +363,17 @@ void core_info_list_update_missing_firmware(core_info_list_t *core_info_list, size_t i; char path[PATH_MAX]; - core_info_firmware_t *firmware = NULL; - core_info_t *info = find_core_info(core_info_list, core); if (!info) return; - firmware = info->firmware; - for (i = 0; i < info->firmware_count; i++) { - fill_pathname_join(path, systemdir, info->firmware[i].path, sizeof(path)); - info->firmware[i].missing = !path_file_exists(path); + if(info->firmware[i].path) + { + fill_pathname_join(path, systemdir, info->firmware[i].path, sizeof(path)); + info->firmware[i].missing = !path_file_exists(path); + } } } @@ -391,7 +394,7 @@ void core_info_list_get_missing_firmware(core_info_list_t *core_info_list, *firmware = info->firmware; - for (i = 0; i < info->firmware_count; i++) + for (i = 1; i < info->firmware_count; i++) { fill_pathname_join(path, systemdir, info->firmware[i].path, sizeof(path)); info->firmware[i].missing = !path_file_exists(path); diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 54820dbb04..aa10b55e79 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -1949,8 +1949,11 @@ void menu_populate_entries(void *data, unsigned menu_type) file_list_push(rgui->selection_buf, "Required firmware:", RGUI_SETTINGS_CORE_INFO_NONE, 0); for(i=0;icore_info_current.firmware_count;i++) { - snprintf(tmp, sizeof(tmp), " Name: %s, %s", rgui->core_info_current.firmware[i].desc ? rgui->core_info_current.firmware[i].desc : "",rgui->core_info_current.firmware[i].missing ? "missing" : "present"); - file_list_push(rgui->selection_buf, tmp, RGUI_SETTINGS_CORE_INFO_NONE, 0); + if(rgui->core_info_current.firmware[i].desc) + { + snprintf(tmp, sizeof(tmp), " Name: %s, %s", rgui->core_info_current.firmware[i].desc ? rgui->core_info_current.firmware[i].desc : "",rgui->core_info_current.firmware[i].missing ? "missing" : "present"); + file_list_push(rgui->selection_buf, tmp, RGUI_SETTINGS_CORE_INFO_NONE, 0); + } } } if(rgui->core_info_current.notes)