Fix crash when simply clicking OK in import dialog

Since the GSList is now only created if the user enters the file selection
dialog, opening the import dialog and then clicking OK without selecting
either a dive computer or a file would cause a crash.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2012-09-18 07:17:55 -04:00
parent ac06d1f693
commit fc250493ca

View file

@ -1395,7 +1395,7 @@ void import_dialog(GtkWidget *w, gpointer data)
{ {
int result; int result;
GtkWidget *dialog, *hbox, *vbox, *label, *info = NULL; GtkWidget *dialog, *hbox, *vbox, *label, *info = NULL;
GSList *filenames; GSList *filenames = NULL;
GtkComboBox *computer; GtkComboBox *computer;
GtkEntry *device; GtkEntry *device;
device_data_t devicedata = { device_data_t devicedata = {
@ -1433,7 +1433,7 @@ repeat:
* we ignore whether a dive computer model was picked */ * we ignore whether a dive computer model was picked */
if (info) if (info)
gtk_widget_destroy(info); gtk_widget_destroy(info);
if (g_slist_length(filenames) == 0) { if (!filenames || g_slist_length(filenames) == 0) {
const char *vendor, *product; const char *vendor, *product;
if (!gtk_combo_box_get_active_iter(computer, &iter)) if (!gtk_combo_box_get_active_iter(computer, &iter))
@ -1455,7 +1455,7 @@ repeat:
info = import_dive_computer(&devicedata, GTK_DIALOG(dialog)); info = import_dive_computer(&devicedata, GTK_DIALOG(dialog));
if (info) if (info)
goto repeat; goto repeat;
} else { } else if (filenames) {
g_slist_foreach(filenames,do_import_file,NULL); g_slist_foreach(filenames,do_import_file,NULL);
g_slist_free(filenames); g_slist_free(filenames);
} }