@@ -868,7 +868,7 @@ _dispatch_root_queue_init_pthread_pool(dispatch_root_queue_context_t qc,
868
868
(void )dispatch_assume (pqc -> dpq_thread_mediator .dsema_port );
869
869
#elif USE_POSIX_SEM
870
870
/* XXXRW: POSIX semaphores don't support LIFO? */
871
- int ret = sem_init (& pqc -> dpq_thread_mediator .dsema_sem ), 0 , 0 );
871
+ int ret = sem_init (& ( pqc -> dpq_thread_mediator .dsema_sem ), 0 , 0 );
872
872
(void )dispatch_assume_zero (ret );
873
873
#endif
874
874
}
@@ -1703,6 +1703,18 @@ _dispatch_queue_specific_queue_dispose(dispatch_queue_specific_queue_t dqsq)
1703
1703
{
1704
1704
dispatch_queue_specific_t dqs , tmp ;
1705
1705
1706
+ #ifdef __LINUX_PORT_HDD__
1707
+ LINUX_PORT_ERROR ();
1708
+ // NOT CORRECT (doesn't support removal during iteration)
1709
+ TAILQ_FOREACH (dqs , & dqsq -> dqsq_contexts , dqs_list ) {
1710
+ if (dqs -> dqs_destructor ) {
1711
+ dispatch_async_f (_dispatch_get_root_queue (
1712
+ _DISPATCH_QOS_CLASS_DEFAULT , false), dqs -> dqs_ctxt ,
1713
+ dqs -> dqs_destructor );
1714
+ }
1715
+ free (dqs );
1716
+ }
1717
+ #else
1706
1718
TAILQ_FOREACH_SAFE (dqs , & dqsq -> dqsq_contexts , dqs_list , tmp ) {
1707
1719
if (dqs -> dqs_destructor ) {
1708
1720
dispatch_async_f (_dispatch_get_root_queue (
@@ -1711,6 +1723,7 @@ _dispatch_queue_specific_queue_dispose(dispatch_queue_specific_queue_t dqsq)
1711
1723
}
1712
1724
free (dqs );
1713
1725
}
1726
+ #endif
1714
1727
_dispatch_queue_destroy ((dispatch_queue_t )dqsq );
1715
1728
}
1716
1729
@@ -3020,6 +3033,8 @@ _dispatch_barrier_sync_slow(dispatch_queue_t dq, void (^work)(void))
3020
3033
work = _dispatch_Block_copy (work );
3021
3034
func = _dispatch_call_block_and_release ;
3022
3035
}
3036
+ #else
3037
+ }
3023
3038
#endif
3024
3039
_dispatch_barrier_sync_f (dq , work , func , pp );
3025
3040
}
0 commit comments