From 28e410386f81bf54227a548084154fa2b6faafbd Mon Sep 17 00:00:00 2001 From: aineoae86-sys Date: Wed, 1 Jul 2026 17:15:23 +0800 Subject: [PATCH] Restore semaphore value on timed wait failure --- FreeRTOS-Plus-POSIX/source/FreeRTOS_POSIX_semaphore.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/FreeRTOS-Plus-POSIX/source/FreeRTOS_POSIX_semaphore.c b/FreeRTOS-Plus-POSIX/source/FreeRTOS_POSIX_semaphore.c index bf4acd9..edb8117 100755 --- a/FreeRTOS-Plus-POSIX/source/FreeRTOS_POSIX_semaphore.c +++ b/FreeRTOS-Plus-POSIX/source/FreeRTOS_POSIX_semaphore.c @@ -184,6 +184,9 @@ int sem_timedwait( sem_t * sem, if( xSemaphoreTake( ( SemaphoreHandle_t ) &pxSem->xSemaphore, xDelay ) != pdTRUE ) { + /* Restore the wait attempt because no semaphore was taken. */ + ( void ) Atomic_Increment_u32( ( uint32_t * ) &pxSem->value ); + if( iStatus == 0 ) { #if ( configUSE_POSIX_ERRNO == 1 )