diff --git a/lib/process_shared/posix/semaphore.rb b/lib/process_shared/posix/semaphore.rb index fab29f8..d1fe59e 100644 --- a/lib/process_shared/posix/semaphore.rb +++ b/lib/process_shared/posix/semaphore.rb @@ -28,7 +28,10 @@ module ProcessShared attach_function :sem_post, [:sem_p], :int attach_function :sem_wait, [:sem_p], :int, :blocking => true attach_function :sem_trywait, [:sem_p], :int, :blocking => true - attach_function :sem_timedwait, [:sem_p, TimeSpec], :int, :blocking => true + + # Workaround bug which only appears to affect Ruby 1.8.7 and REE + BLOCKING_SEM_TIMEDWAIT = (RUBY_VERSION != '1.8.7') + attach_function :sem_timedwait, [:sem_p, TimeSpec], :int, :blocking => BLOCKING_SEM_TIMEDWAIT error_check(:sem_close, :sem_unlink, :sem_init, :sem_destroy, :sem_getvalue, :sem_post, :sem_wait, :sem_trywait,