On Mon, 2006-07-03 at 17:35 +0200, Guus Sliepen wrote:
> I guess it crashes when trying to evaluate active_sensor->sensor_values[0], 
> because sensor_values is a NULL pointer.

Looks like the same crash I was debugging earlier. Can you please try
the attached patch?

-- 
Sam Morris
http://robots.org.uk/

PGP key id 5EA01078
3412 EA18 1277 354B 991B  C869 B219 7FDB 5EA0 1078

diff -Nur sensors-applet-1.7.1/src/active-sensor.c sensors-applet-1.7.1.new/src/active-sensor.c
--- sensors-applet-1.7.1/src/active-sensor.c	2006-06-27 05:12:30.000000000 +0100
+++ sensors-applet-1.7.1.new/src/active-sensor.c	2006-07-03 14:51:52.000000000 +0100
@@ -23,6 +23,8 @@
 #include "active-sensor.h"
 #include "sensors-applet-gconf.h"
 
+static gboolean upgrade_warning_displayed = FALSE;
+
 typedef enum {
         VERY_LOW_SENSOR_VALUE = 0,
         LOW_SENSOR_VALUE,
@@ -163,6 +165,11 @@
 
 	g_assert(active_sensor != NULL);
 
+	if (active_sensor->sensor_values == NULL) {
+		g_debug ("active_sensor->sensor_values == NULL!\n");
+		return;
+	}
+
 	/* select overlay icon
 	 * depending on sensor
 	 * value */
@@ -559,6 +566,24 @@
 
                         tooltip = g_strdup_printf("%s %s", sensor_label, value_text);
 
+			if (active_sensor->sensor_values == NULL) {
+				g_debug ("active_sensor->sensor_values == NULL!");
+				if (! upgrade_warning_displayed) {
+					upgrade_warning_displayed = TRUE;
+
+					GtkLabel *l = gtk_label_new ("sensors-applet: upgraded; please remove");
+					gtk_container_add (active_sensor->sensors_applet->applet, l);
+					gtk_widget_show (l);
+
+					GtkWidget *md = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
+						"%s", "sensors-applet upgraded");
+					gtk_message_dialog_format_secondary_text (md, "%s",
+						"Please add a new instance of the applet to your panel, and remove the old one.");
+					gtk_dialog_run (GTK_DIALOG (md));
+					gtk_widget_destroy (md);
+				}
+			} else {
+
                         /* update icon if icon range has changed if no
                          * update has been done before */
                         if ((sensor_value_range(sensor_value, sensor_low_value, sensor_high_value) != sensor_value_range(active_sensor->sensor_values[0], active_sensor->sensor_low_value, active_sensor->sensor_high_value)) || !(active_sensor->updated)) {
@@ -628,6 +653,8 @@
                                              active_sensor->graph_event_box,
                                              tooltip,
                                              tooltip);
+
+			}
                         
 			g_free(label_text);
                         g_free(tooltip);

Reply via email to