netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=77516b3a988a99b19fe7885541f0339b30f4276e

commit 77516b3a988a99b19fe7885541f0339b30f4276e
Author: Alastair Poole <[email protected]>
Date:   Thu Jun 18 12:54:45 2020 +0100

    openbsd: fix
---
 src/bin/system/machine.c | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/bin/system/machine.c b/src/bin/system/machine.c
index 3b67c2f..157a90a 100644
--- a/src/bin/system/machine.c
+++ b/src/bin/system/machine.c
@@ -737,7 +737,7 @@ _power_battery_count_get(power_t *power)
    struct sensordev snsrdev;
    size_t sdlen = sizeof(struct sensordev);
    int mib[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
-   int i, devn;
+   int i, devn, id;
    for (devn = 0;; devn++) {
         mib[2] = devn;
         if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
@@ -748,22 +748,23 @@ _power_battery_count_get(power_t *power)
                break;
           }
 
-        for (i = 0; i < MAX_BATTERIES; i++) {
+        for (i = 0; i < 10; i++) {
              char buf[64];
              snprintf(buf, sizeof(buf), "acpibat%d", i);
              if (!strcmp(buf, snsrdev.xname))
                {
+                  id = power->battery_count;
                   power->batteries = realloc(power->batteries, 1 +
                                      power->battery_count * sizeof(bat_t **));
-                  power->batteries[i] = calloc(1, sizeof(bat_t)
-                  power->batteries[i]->name = strdup(buf);
-                  power->batteries[i]->present = true;
-                  power->battery_count++;
-                  power->batteries[i]->mibs = malloc(sizeof(int) * 5);
-                  int *tmp = power->batteries[i]->mib;
+                  power->batteries[id] = calloc(1, sizeof(bat_t));
+                  power->batteries[id]->name = strdup(buf);
+                  power->batteries[id]->present = true;
+                  power->batteries[id]->mibs = malloc(sizeof(int) * 5);
+                  int *tmp = power->batteries[id]->mibs;
                   tmp[0] = mib[0];
                   tmp[1] = mib[1];
                   tmp[2] = mib[2];
+                  power->battery_count++;
                }
           }
 
@@ -845,7 +846,7 @@ _battery_state_get(power_t *power)
      {
         charge_full = charge_current = 0;
 
-        mib = power->bat_mibs[i];
+        mib = power->batteries[i]->mibs;
         mib[3] = SENSOR_WATTHOUR;
         mib[4] = 0;
 
@@ -1049,10 +1050,6 @@ _power_state_get(power_t *power)
            (power->batteries[i]->charge_current /
                                     power->batteries[i]->charge_full);
         power->batteries[i]->percent = percent;
-#if defined(__OpenBSD__)
-        if (power->batteries[i]->mibs);
-          free(power->batteries[i]->mibs);
-#endif
      }
 }
 
@@ -1218,6 +1215,10 @@ system_info_all_free(Sys_Info *info)
      {
         if (info->power.batteries[i]->name)
           free(info->power.batteries[i]->name);
+#if defined(__OpenBSD__)
+        if (info->power.batteries[i]->mibs)
+          free(info->power.batteries[i]->mibs);
+#endif
         free(info->power.batteries[i]);
      }
    if (info->power.batteries)

-- 


Reply via email to