The problem is that check_timeout is reset after the first battery got updated, so the values for the second battery are never read.
This results in status->value == NULL, and strncmp segfaults.
The solution is to update check_timeout after all battery values are updated.
kind regards
Stefan
---
diff -r -u -b cpufreqd-2.3.3/src/cpufreqd_acpi_battery.c
cpufreqd-2.3.3.new/src/cpufreqd_acpi_battery.c
--- cpufreqd-2.3.3/src/cpufreqd_acpi_battery.c 2008-08-23 05:52:47.000000000
+0200
+++ cpufreqd-2.3.3.new/src/cpufreqd_acpi_battery.c 2008-12-23
19:39:18.850501003 +0100
@@ -325,7 +325,6 @@
/* if check_timeout is expired */
if (check_timeout <= 0) {
- check_timeout = acpi_config.battery_update_interval;
if (read_battery(&info[i]) == 0)
n_read++;
else
@@ -365,6 +364,11 @@
#endif
} /* end info loop */
+ /* check_timeout is global for all batteries, so update it after all
batteries got updated */
+ if (check_timeout <= 0) {
+ check_timeout = acpi_config.battery_update_interval;
+ }
+
/* calculates medium battery life between all batteries */
if (total_capacity > 0)
avg_battery_level = 100 * (total_remaining /
(double)total_capacity);
signature.asc
Description: This is a digitally signed message part.

