io-event 1.7.3 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4835f250a8c525c97d3315d67508bff55d6a21e3b208085e970c10635a3e9296
4
- data.tar.gz: 2187f6b6aeacd2ef3fa2b521623dd151390aefe0963bb69a00e4d0e0f94b67f5
3
+ metadata.gz: 9761a366e91db284c56c77d2ec19db8b6d652d98f2fe39750108e685ff3c2b12
4
+ data.tar.gz: 3d9d1fab942ec257073a317cecefb06248952e5e7c2518f0298d60b476ec1905
5
5
  SHA512:
6
- metadata.gz: e9e07bbc607cb39694c96c40a8bef133590bf352de6a3713a0d1ce094df22b6cd611c0723694852fa9ca46d8bbb7d367a0ba8601cd4ee883ed2a1bdc2eb29680
7
- data.tar.gz: 267a7d8e83f1f48b89261f1b55a07f96687da1f0e5740441c9499308fac5f10fd4cc63441677e7bd0131a0fab3dc9af6d85b4f51be81504c6e39b047efa97e2d
6
+ metadata.gz: 4e7c4790ad17bb655136e1ce25b006c4bc97906b7b46eac2abddddd100eb882d19569da27ae195455b457ea3f243bd8ebe6475a9d0255f1bd11bf33cf66edd15
7
+ data.tar.gz: 00b9bc9c8ad79828b50b67fdf9fb9a9d25664fb5d9b8c77eb70aa708ee719974b07ba6ed4c3098d76c9b33132061070d36bc39c2c5c707448a9400cef0f2a4ed
checksums.yaml.gz.sig CHANGED
Binary file
@@ -504,6 +504,13 @@ VALUE IO_Event_Selector_EPoll_process_wait(VALUE self, VALUE fiber, VALUE _pid,
504
504
 
505
505
  rb_update_max_fd(descriptor);
506
506
 
507
+ // `pidfd_open` (above) may be edge triggered, so we need to check if the process is already exited, and if so, return immediately, otherwise we will block indefinitely.
508
+ VALUE status = IO_Event_Selector_process_status_wait(pid, flags);
509
+ if (status != Qnil) {
510
+ close(descriptor);
511
+ return status;
512
+ }
513
+
507
514
  struct IO_Event_Selector_EPoll_Waiting waiting = {
508
515
  .list = {.type = &IO_Event_Selector_EPoll_process_wait_list_type},
509
516
  .fiber = fiber,
@@ -461,6 +461,7 @@ void process_prewait(pid_t pid) {
461
461
  result = waitid(P_PID, pid, &info, WEXITED | WNOWAIT);
462
462
  // This can sometimes get interrupted by SIGCHLD.
463
463
  } while (result == -1 && errno == EINTR);
464
+
464
465
  if (result == -1) {
465
466
  rb_sys_fail("process_prewait:waitid");
466
467
  }
@@ -5,6 +5,6 @@
5
5
 
6
6
  class IO
7
7
  module Event
8
- VERSION = "1.7.3"
8
+ VERSION = "1.7.4"
9
9
  end
10
10
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: io-event
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.3
4
+ version: 1.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -45,7 +45,7 @@ cert_chain:
45
45
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
46
46
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
47
47
  -----END CERTIFICATE-----
48
- date: 2024-10-21 00:00:00.000000000 Z
48
+ date: 2024-11-24 00:00:00.000000000 Z
49
49
  dependencies: []
50
50
  description:
51
51
  email:
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
106
  requirements: []
107
- rubygems_version: 3.5.11
107
+ rubygems_version: 3.5.22
108
108
  signing_key:
109
109
  specification_version: 4
110
110
  summary: An event loop.
metadata.gz.sig CHANGED
Binary file