diff options
author | Eric Wong <e@80x24.org> | 2016-02-02 22:14:16 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-02-02 22:14:16 +0000 |
commit | f14356733e83e5af35ec5c9f2346bf9607fc3a16 (patch) | |
tree | 452c857c9e93b2172021e99f6a09dfd96e50f963 /ext/posix_mq/posix_mq.c | |
parent | 879bccec2058505f3d5c446595083649169b357c (diff) | |
download | ruby_posix_mq-f14356733e83e5af35ec5c9f2346bf9607fc3a16.tar.gz |
IO#close under Ruby 2.3 is idempotent, we shall follow suit with POSIX_MQ#close
Diffstat (limited to 'ext/posix_mq/posix_mq.c')
-rw-r--r-- | ext/posix_mq/posix_mq.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/posix_mq/posix_mq.c b/ext/posix_mq/posix_mq.c index 5e1b3b8..0567676 100644 --- a/ext/posix_mq/posix_mq.c +++ b/ext/posix_mq/posix_mq.c @@ -824,7 +824,15 @@ static VALUE setattr(VALUE self, VALUE astruct) */ static VALUE _close(VALUE self) { - struct posix_mq *mq = get(self, 1); + struct posix_mq *mq; + + if (IDEMPOTENT_IO_CLOSE) { /* defined in extconf.rb */ + mq = get(self, 0); + if (!mq || (mq->des == MQD_INVALID)) + return Qnil; + } else { + mq = get(self, 1); + } if (! MQ_IO_CLOSE(mq)) { if (mq_close(mq->des) < 0) |