mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-21 01:47:09 +08:00
[fix] memory leak when the value of posix semaphore is zero.
This commit is contained in:
parent
d3139706e4
commit
a305edd4db
@ -39,7 +39,9 @@ static void posix_sem_delete(sem_t *psem)
|
||||
posix_sem_list = psem->next;
|
||||
|
||||
rt_sem_delete(psem->sem);
|
||||
rt_free(psem);
|
||||
|
||||
if(psem->unamed == 0)
|
||||
rt_free(psem);
|
||||
|
||||
return;
|
||||
}
|
||||
@ -55,7 +57,9 @@ static void posix_sem_delete(sem_t *psem)
|
||||
|
||||
/* delete RT-Thread mqueue */
|
||||
rt_sem_delete(psem->sem);
|
||||
rt_free(psem);
|
||||
|
||||
if(psem->unamed == 0)
|
||||
rt_free(psem);
|
||||
|
||||
return ;
|
||||
}
|
||||
@ -107,8 +111,6 @@ RTM_EXPORT(sem_close);
|
||||
|
||||
int sem_destroy(sem_t *sem)
|
||||
{
|
||||
rt_err_t result;
|
||||
|
||||
if ((!sem) || !(sem->unamed))
|
||||
{
|
||||
rt_set_errno(EINVAL);
|
||||
@ -118,8 +120,7 @@ int sem_destroy(sem_t *sem)
|
||||
|
||||
/* lock posix semaphore list */
|
||||
rt_sem_take(&posix_sem_lock, RT_WAITING_FOREVER);
|
||||
result = rt_sem_trytake(sem->sem);
|
||||
if (result != RT_EOK)
|
||||
if(rt_list_len(&sem->sem->parent.suspend_thread) != 0)
|
||||
{
|
||||
rt_sem_release(&posix_sem_lock);
|
||||
rt_set_errno(EBUSY);
|
||||
|
Loading…
x
Reference in New Issue
Block a user