diff options
| author | mysterywolf <[email protected]> | 2020-10-11 17:54:39 +0800 |
|---|---|---|
| committer | mysterywolf <[email protected]> | 2020-10-11 17:54:39 +0800 |
| commit | 2469335e213d6f2875d0b61575ceebd1f2a26509 (patch) | |
| tree | c140996cddfb452077bd0132687c35867c5114c0 /src/ipc.c | |
| parent | 13044b1e290a3aef4e57c3d443da1c571d33789d (diff) | |
[fix bug] #3951
Diffstat (limited to 'src/ipc.c')
| -rw-r--r-- | src/ipc.c | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -35,7 +35,9 @@ * 2018-10-02 Bernard add 64bit support for mailbox * 2019-09-16 tyx add send wait support for message queue * 2020-07-29 Meco Man fix thread->event_set/event_info when received an - event without pending + * event without pending + * 2020-10-11 Meco Man add semaphore values' overflow-check code + * in the function of rt_sem_release */ #include <rtthread.h> @@ -463,7 +465,17 @@ rt_err_t rt_sem_release(rt_sem_t sem) need_schedule = RT_TRUE; } else - sem->value ++; /* increase value */ + { + if(sem->value < 65535u) + { + sem->value ++; /* increase value */ + } + else + { + rt_hw_interrupt_enable(temp); /* enable interrupt */ + return -RT_EFULL; /* value overflowed */ + } + } /* enable interrupt */ rt_hw_interrupt_enable(temp); |
