Avoid SIGSEGV when editing multiple dives

The multi-dive editing is broken if you right-click on the dive
text-fields (instead of the divelist).  This just avoids the SIGSEGV, it
doesn't really fix the editing.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Linus Torvalds 2012-08-16 11:03:39 -07:00
parent 9b72217f79
commit 673cf274f8

11
info.c
View file

@ -470,13 +470,18 @@ int edit_multi_dive_info(int nr, int *indices)
success = gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT; success = gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT;
if (success) if (success)
for (i = 0; i < nr; i++) { for (i = 0; i < nr; i++) {
int idx = indices[i];
struct dive *n = get_dive(idx);
if (!n)
continue;
/* copy all "info" fields */ /* copy all "info" fields */
save_dive_info_changes(get_dive(indices[i]), &info); save_dive_info_changes(n, &info);
/* copy the cylinders / weightsystems */ /* copy the cylinders / weightsystems */
update_equipment_data(get_dive(indices[i]), dive); update_equipment_data(n, dive);
/* this is extremely inefficient... it loops through all /* this is extremely inefficient... it loops through all
dives to find the right one - but we KNOW the index already */ dives to find the right one - but we KNOW the index already */
flush_divelist(get_dive(indices[i])); flush_divelist(n);
} }
gtk_widget_destroy(dialog); gtk_widget_destroy(dialog);