Changeset 06599a1 in mainline for uspace/app/sysctl/main.c


Ignore:
Timestamp:
2020-03-06T19:13:55Z (5 years ago)
Author:
Matthieu Riolo <matthieu.riolo@…>
Children:
3529f148
Parents:
22d990c
git-author:
Matthieu Riolo <matthieu.riolo@…> (2020-02-05 21:48:41)
git-committer:
Matthieu Riolo <matthieu.riolo@…> (2020-03-06 19:13:55)
Message:

Correcting sysctl list-units

One failure was a cast in lib/sysman/src/ctl.c which wrongly used
an enum like a pointer of the type sysarg_t. This resulted into a
memory allocation failure.

The second bug was in the loop of sysctl. For iterating over all
found units the difference was created of two pointers and then
compared to an unsigned int which was down casted to an int.
Unnecessary complicated and a source for casting problems.
It has been replaced with a simple for-loop and an array access

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/sysctl/main.c

    r22d990c r06599a1  
    7676        }
    7777
    78         for (unit_handle_t *it = units; it - units < (int)unit_cnt; ++it) {
     78        for (size_t i = 0; i < unit_cnt; i++) {
     79                unit_handle_t handle = units[i];
    7980                char name[NAME_BUFFER];
    8081                unit_state_t state;
    8182
    82                 rc = sysman_unit_get_name(*it, name, NAME_BUFFER);
     83                rc = sysman_unit_get_name(handle, name, NAME_BUFFER);
    8384                if (rc != EOK)
    8485                        goto fail;
    8586
    86                 rc = sysman_unit_get_state(*it, &state);
     87                rc = sysman_unit_get_state(handle, &state);
    8788                if (rc != EOK)
    8889                        goto fail;
Note: See TracChangeset for help on using the changeset viewer.