From: Linus Torvalds Date: Thu, 22 Sep 2011 23:38:24 +0000 (-0700) Subject: Fix progress bar during libdivecomputer imports X-Git-Url: http://git.tdb.fi/?p=ext%2Fsubsurface.git;a=commitdiff_plain;h=c0adfdc41bc5bea580f85a29dc073678fcb617e8 Fix progress bar during libdivecomputer imports As reported by Mauro Dreissig, the progress bar doesn't work and causes a SIGSEGV due to a missing allocation. The code broke when Dirk separated out the GUI from the core code, and I hadn't tried divecomputer downloads since. Reported-by: Mauro Dreissig Signed-off-by: Linus Torvalds --- diff --git a/gtk-gui.c b/gtk-gui.c index 3994387..754a777 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -616,8 +616,8 @@ void import_dialog(GtkWidget *w, gpointer data) hbox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox, FALSE, TRUE, 3); - devicedata.progress->bar = gtk_progress_bar_new(); - gtk_container_add(GTK_CONTAINER(hbox), devicedata.progress->bar); + devicedata.progress.bar = gtk_progress_bar_new(); + gtk_container_add(GTK_CONTAINER(hbox), devicedata.progress.bar); gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); diff --git a/libdivecomputer.c b/libdivecomputer.c index cf8b048..f645bff 100644 --- a/libdivecomputer.c +++ b/libdivecomputer.c @@ -369,7 +369,7 @@ static void event_cb(device_t *device, device_event_t event, const void *data, v printf("Event: waiting for user action\n"); break; case DEVICE_EVENT_PROGRESS: - update_progressbar(devdata->progress, + update_progressbar(&devdata->progress, (double) progress->current / (double) progress->maximum); break; case DEVICE_EVENT_DEVINFO: diff --git a/libdivecomputer.h b/libdivecomputer.h index 205f28e..abb09e2 100644 --- a/libdivecomputer.h +++ b/libdivecomputer.h @@ -22,7 +22,7 @@ typedef struct device_data_t { device_type_t type; const char *name, *devname; - progressbar_t *progress; + progressbar_t progress; device_devinfo_t devinfo; device_clock_t clock; } device_data_t;