diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-03-20 18:08:05 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-03-20 18:08:05 +0900 |
commit | 758e4db551e7e80a65b610cc73fcb61e74ec5a0c (patch) | |
tree | f9095b39d880ba96be1ec68a7e3095858dacae80 | |
parent | 1aa255504414d74977130f9086ee35e149cd22e2 (diff) | |
download | ruby-758e4db551e7e80a65b610cc73fcb61e74ec5a0c.tar.gz |
Mark cached pid if necessary
-rw-r--r-- | process.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -514,8 +514,8 @@ clear_pid_cache(void) static inline void rb_process_atfork(void) { - clear_pid_cache(); - rb_thread_atfork(); /* calls mjit_resume() */ + clear_pid_cache(); + rb_thread_atfork(); /* calls mjit_resume() */ } /* @@ -9055,5 +9055,10 @@ Init_process(void) #endif define_id(hertz); + /* pid_t must be signed, since fork() can return -1 */ + const rb_pid_t half_max_pidt = (rb_pid_t)1 << (sizeof(rb_pid_t) * CHAR_BIT - 2); + const rb_pid_t max_pidt = 2 * (half_max_pidt - 1) + 1; + if (!POSFIXABLE(max_pidt)) rb_gc_register_address(&cached_pid); + InitVM(process); } |