# HG changeset patch # User zas_ # Date 1209110842 0 # Node ID 0717bcc4f2b7bc87a916c108c743fe2e30c2d502 # Parent fd4208f8b5f33d9f96f0b307e76ffe99c253ff20 Handle the case of reduction of the number of view directory types. Previously it was leading to a segfault. diff -r fd4208f8b5f3 -r 0717bcc4f2b7 src/layout.c --- a/src/layout.c Thu Apr 24 20:29:09 2008 +0000 +++ b/src/layout.c Fri Apr 25 08:07:22 2008 +0000 @@ -1913,7 +1913,7 @@ 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 */ diff -r fd4208f8b5f3 -r 0717bcc4f2b7 src/layout_util.c --- a/src/layout_util.c Thu Apr 24 20:29:09 2008 +0000 +++ b/src/layout_util.c Fri Apr 25 08:07:22 2008 +0000 @@ -1414,7 +1414,7 @@ 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(); diff -r fd4208f8b5f3 -r 0717bcc4f2b7 src/view_dir.c --- a/src/view_dir.c Thu Apr 24 20:29:09 2008 +0000 +++ b/src/view_dir.c Fri Apr 25 08:07:22 2008 +0000 @@ -58,6 +58,8 @@ 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; @@ -618,7 +620,7 @@ 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), diff -r fd4208f8b5f3 -r 0717bcc4f2b7 src/view_dir.h --- a/src/view_dir.h Thu Apr 24 20:29:09 2008 +0000 +++ b/src/view_dir.h Fri Apr 25 08:07:22 2008 +0000 @@ -20,7 +20,8 @@ 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);