summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-09-22 16:38:24 -0700
committerGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-09-22 16:38:24 -0700
commitc0adfdc41bc5bea580f85a29dc073678fcb617e8 (patch)
treea53cf9fac37cd9bad541178b75afdb5974bfdd60
parent15463fdeb26ed1b5fdff62e4721a6dbbc507cefc (diff)
downloadsubsurface-c0adfdc41bc5bea580f85a29dc073678fcb617e8.tar.gz
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 <mukadr@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--gtk-gui.c4
-rw-r--r--libdivecomputer.c2
-rw-r--r--libdivecomputer.h2
3 files changed, 4 insertions, 4 deletions
diff --git a/gtk-gui.c b/gtk-gui.c
index 3994387ac..754a77772 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 cf8b048c9..f645bff14 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 205f28e7c..abb09e2c4 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;