From 2469335e213d6f2875d0b61575ceebd1f2a26509 Mon Sep 17 00:00:00 2001 From: mysterywolf <920369182@qq.com> Date: Sun, 11 Oct 2020 17:54:39 +0800 Subject: [PATCH] [fix bug] #3951 --- src/ipc.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ipc.c b/src/ipc.c index 5646fc7f40..dc347119ae 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -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 @@ -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);