diff --git a/kernel/src/los_sem.c b/kernel/src/los_sem.c index ebc31328..664feccb 100644 --- a/kernel/src/los_sem.c +++ b/kernel/src/los_sem.c @@ -232,6 +232,8 @@ LITE_OS_SEC_TEXT UINT32 LOS_SemPend(UINT32 semHandle, UINT32 timeout) goto ERROR_SEM_PEND; } + runningTask = (LosTaskCB *)g_losTask.runTask; + if (semPended->semCount > 0) { semPended->semCount--; LOS_IntRestore(intSave); @@ -244,7 +246,6 @@ LITE_OS_SEC_TEXT UINT32 LOS_SemPend(UINT32 semHandle, UINT32 timeout) goto ERROR_SEM_PEND; } - runningTask = (LosTaskCB *)g_losTask.runTask; runningTask->taskSem = (VOID *)semPended; OsSchedTaskWait(&semPended->semList, timeout); LOS_IntRestore(intSave);