--- xfce4-sensors-plugin-0.10.99.5.orig/panel-plugin/acpi.c	2008-08-06 01:56:00.063518101 +0200
+++ xfce4-sensors-plugin-0.10.99.5/panel-plugin/acpi.c	2008-08-06 03:11:08.635447284 +0200
@@ -445,7 +445,7 @@
 void
 refresh_acpi (gpointer chip_feature, gpointer data)
 {
-    char *file, *zone;
+    char *file, *zone, *state;
     t_chipfeature *cf;
 
     TRACE ("enters refresh_acpi");
@@ -472,8 +472,18 @@
             break;
 
         case STATE:
-            file = g_strdup_printf ("%s/%s/state", ACPI_DIR_FAN, cf->devicename);
-            cf->raw_value = strcmp(get_acpi_value(file), "on")==0 ? 1.0 : 0.0;
+            // get_acpi_value() expects a _full_ path (unlike get_acpi_zone_value() etc)!
+            file = g_strdup_printf ("%s/%s/%s/state", ACPI_PATH, ACPI_DIR_FAN, cf->devicename);
+            state = get_acpi_value(file);
+            // if get_acpi_value has returned NULL (=> the file hasn't been found)
+            // we display the fan as "off"
+            if(state==NULL){
+                DBG("get_acpi_value has returned NULL!");
+                cf->raw_value = 0.0;
+                break;
+            }
+            // on my box there is a \n after "on".. dunno if that's normal, so i only compare 2 chars
+            cf->raw_value = strncmp(state, "on", 2)==0 ? 1.0 : 0.0;
             g_free (file);
             /* g_free (cf->formatted_value);
             cf->formatted_value = g_strdup_printf (_("%.0f"), cf->raw_value); */
