Previously it was leading to a segfault.
layout_config_parse(options->layout.style, options->layout.order,
&lw->dir_location, &lw->file_location, &lw->image_location);
- lw->dir_view_type = options->layout.dir_view_type;
+ lw->dir_view_type = CLAMP(options->layout.dir_view_type, 0, VIEW_DIR_TYPES_COUNT - 1);
lw->icon_view = options->layout.view_as_icons;
/* divider positions */
menu_split_radio_entries, G_N_ELEMENTS(menu_split_radio_entries),
0, G_CALLBACK(layout_menu_split_cb), lw);
gtk_action_group_add_radio_actions(lw->action_group,
- menu_view_dir_radio_entries, G_N_ELEMENTS(menu_view_dir_radio_entries),
+ menu_view_dir_radio_entries, VIEW_DIR_TYPES_COUNT,
0, G_CALLBACK(layout_menu_view_dir_as_cb), lw);
lw->ui_manager = gtk_ui_manager_new();
ViewDir *vd_new(DirViewType type, const gchar *path)
{
+ g_assert(VIEW_DIR_TYPES_COUNT <= G_N_ELEMENTS(menu_view_dir_radio_entries));
+
ViewDir *vd = g_new0(ViewDir, 1);
vd->path = NULL;
submenu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
- for (i = 0; i < G_N_ELEMENTS(menu_view_dir_radio_entries); i++)
+ for (i = 0; i < VIEW_DIR_TYPES_COUNT; i++)
{
item = menu_item_add_check(submenu, _(menu_view_dir_radio_entries[i].label),
(vd->type == menu_view_dir_radio_entries[i].value),
DIR_COLUMN_COUNT
};
-extern GtkRadioActionEntry menu_view_dir_radio_entries[2];
+#define VIEW_DIR_TYPES_COUNT 1
+extern GtkRadioActionEntry menu_view_dir_radio_entries[VIEW_DIR_TYPES_COUNT];
ViewDir *vd_new(DirViewType type, const gchar *path);