Pārlūkot izejas kodu

[bug fixed] add mutex values' overflow-check code

mysterywolf 4 gadi atpakaļ
vecāks
revīzija
b93b494239
1 mainītis faili ar 11 papildinājumiem un 3 dzēšanām
  1. 11 3
      src/ipc.c

+ 11 - 3
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
     {