summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormysterywolf <[email protected]>2020-10-21 17:15:43 +0800
committermysterywolf <[email protected]>2020-10-21 17:15:43 +0800
commitb93b4942390dbcf0834f762145c7784d6b32075c (patch)
tree9ed3078a221aca71d9f970fe4c0cceaa6cc0a99f
parent84b206533aabae45d4497ad6a23a83865e423de4 (diff)
[bug fixed] add mutex values' overflow-check code
-rw-r--r--src/ipc.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/ipc.c b/src/ipc.c
index dc347119ae..129d3eea44 100644
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -37,7 +37,7 @@
* 2020-07-29 Meco Man fix thread->event_set/event_info when received an
* event without pending
* 2020-10-11 Meco Man add semaphore values' overflow-check code
- * in the function of rt_sem_release
+ * 2020-10-21 Meco Man add mutex values' overflow-check code
*/
#include <rtthread.h>
@@ -697,8 +697,16 @@ rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t time)
if (mutex->owner == thread)
{
- /* it's the same thread */
- mutex->hold ++;
+ if(mutex->hold < 255u)
+ {
+ /* it's the same thread */
+ mutex->hold ++;
+ }
+ else
+ {
+ rt_hw_interrupt_enable(temp); /* enable interrupt */
+ return -RT_EFULL; /* value overflowed */
+ }
}
else
{