@@ -712,10 +712,10 @@ _dispatch_thread_semaphore_create(void)
712
712
}
713
713
return s4 ;
714
714
#elif USE_POSIX_SEM
715
- sem_t s4 ;
716
- int ret = sem_init (& s4 , 0 , 0 );
715
+ sem_t * s4 = malloc ( sizeof ( sem_t )) ;
716
+ int ret = sem_init (s4 , 0 , 0 );
717
717
DISPATCH_SEMAPHORE_VERIFY_RET (ret );
718
- return s4 ;
718
+ return ( _dispatch_thread_semaphore_t ) s4 ;
719
719
#elif USE_WIN32_SEM
720
720
HANDLE tmp ;
721
721
while (!dispatch_assume (tmp = CreateSemaphore (NULL , 0 , LONG_MAX , NULL ))) {
@@ -738,8 +738,8 @@ _dispatch_thread_semaphore_dispose(_dispatch_thread_semaphore_t sema)
738
738
DISPATCH_VERIFY_MIG (kr );
739
739
DISPATCH_SEMAPHORE_VERIFY_KR (kr );
740
740
#elif USE_POSIX_SEM
741
- sem_t s4 = (sem_t )sema ;
742
- int ret = sem_destroy (& s4 );
741
+ sem_t * s4 = (sem_t * )sema ;
742
+ int ret = sem_destroy (s4 );
743
743
DISPATCH_SEMAPHORE_VERIFY_RET (ret );
744
744
#elif USE_WIN32_SEM
745
745
// XXX: signal the semaphore?
@@ -762,8 +762,8 @@ _dispatch_thread_semaphore_signal(_dispatch_thread_semaphore_t sema)
762
762
kern_return_t kr = semaphore_signal (s4 );
763
763
DISPATCH_SEMAPHORE_VERIFY_KR (kr );
764
764
#elif USE_POSIX_SEM
765
- sem_t s4 = (sem_t )sema ;
766
- int ret = sem_post (& s4 );
765
+ sem_t * s4 = (sem_t * )sema ;
766
+ int ret = sem_post (s4 );
767
767
DISPATCH_SEMAPHORE_VERIFY_RET (ret );
768
768
#elif USE_WIN32_SEM
769
769
int ret ;
@@ -788,10 +788,10 @@ _dispatch_thread_semaphore_wait(_dispatch_thread_semaphore_t sema)
788
788
} while (slowpath (kr == KERN_ABORTED ));
789
789
DISPATCH_SEMAPHORE_VERIFY_KR (kr );
790
790
#elif USE_POSIX_SEM
791
- sem_t s4 = (sem_t )sema ;
791
+ sem_t * s4 = (sem_t * )sema ;
792
792
int ret ;
793
793
do {
794
- ret = sem_wait (& s4 );
794
+ ret = sem_wait (s4 );
795
795
} while (slowpath (ret != 0 ));
796
796
DISPATCH_SEMAPHORE_VERIFY_RET (ret );
797
797
#elif USE_WIN32_SEM
0 commit comments