diff options
Diffstat (limited to 'cpukit/posix/src/semopen.c')
-rw-r--r-- | cpukit/posix/src/semopen.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/cpukit/posix/src/semopen.c b/cpukit/posix/src/semopen.c index 02b518f588..f3e857e37a 100644 --- a/cpukit/posix/src/semopen.c +++ b/cpukit/posix/src/semopen.c @@ -53,7 +53,7 @@ sem_t *sem_open( unsigned int value = 0; int status; sem_t the_semaphore_id; - Objects_Id *id; + sem_t *id; POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; @@ -101,9 +101,7 @@ sem_t *sem_open( the_semaphore->open_count += 1; _Thread_Enable_dispatch(); _Thread_Enable_dispatch(); - id = &the_semaphore->Object.id; - return (sem_t *)id; - + goto return_id; } /* @@ -127,6 +125,12 @@ sem_t *sem_open( if ( status == -1 ) return SEM_FAILED; - id = &the_semaphore->Object.id; - return (sem_t *)id; +return_id: + #if defined(RTEMS_USE_16_BIT_OBJECT) + the_semaphore->Semaphore_id = the_semaphore->Object.id; + id = &the_semaphore->Semaphore_id; + #else + id = &the_semaphore->Object.id; + #endif + return id; } |