From b35e62ed07cfe36ff24ca32efb4238b797bb482d Mon Sep 17 00:00:00 2001 From: "W. Eric Norum" Date: Mon, 20 Mar 2000 23:08:46 +0000 Subject: [PATCH] Ensure that semaphore is destroyed even if it is held by the calling task. --- src/libCom/osi/os/RTEMS/osdSem.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libCom/osi/os/RTEMS/osdSem.c b/src/libCom/osi/os/RTEMS/osdSem.c index 1bf82fa73..8cdcc8fcf 100644 --- a/src/libCom/osi/os/RTEMS/osdSem.c +++ b/src/libCom/osi/os/RTEMS/osdSem.c @@ -64,6 +64,10 @@ semBinaryDestroy(semBinaryId id) rtems_status_code sc; sc = rtems_semaphore_delete (sid); + if (sc == RTEMS_RESOURCE_IN_USE) { + semBinaryGive (id); + sc = rtems_semaphore_delete (sid); + } if (sc != RTEMS_SUCCESSFUL) errlogPrintf ("Can't destroy semaphore: %s\n", rtems_status_text (sc)); }