sched/env: Fix the return value of unsetenv()

If the environment variable does not exist, the function succeeds, as
defined by POSIX.
This commit is contained in:
Ville Juven 2022-06-13 15:00:44 +03:00 committed by Petro Karashchenko
parent cf91b403c9
commit 1b32fc1642
1 changed files with 4 additions and 5 deletions

View File

@ -61,23 +61,22 @@ int unsetenv(FAR const char *name)
{
FAR struct tcb_s *rtcb = this_task();
FAR struct task_group_s *group = rtcb->group;
int ret = OK;
int idx;
DEBUGASSERT(name && group);
/* Check if the variable exists */
sched_lock();
if (group && (ret = env_findvar(group, name)) >= 0)
if (group && (idx = env_findvar(group, name)) >= 0)
{
/* It does! Remove the name=value pair from the environment. */
env_removevar(group, ret);
ret = OK;
env_removevar(group, idx);
}
sched_unlock();
return ret;
return OK;
}
#endif /* CONFIG_DISABLE_ENVIRON */