diff options
Diffstat (limited to 'bignum.c')
-rw-r--r-- | bignum.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -2572,6 +2572,7 @@ bigdivrem1(void *ptr) return 0; } +/* async-signal-safe */ static void rb_big_stop(void *ptr) { @@ -2636,7 +2637,7 @@ bigdivrem_restoring(BDIGIT *zds, size_t zn, BDIGIT *yds, size_t yn) if (bds.zn > 10000 || bds.yn > 10000) { retry: bds.stop = Qfalse; - rb_thread_call_without_gvl(bigdivrem1, &bds, rb_big_stop, &bds); + rb_nogvl(bigdivrem1, &bds, rb_big_stop, &bds, RB_NOGVL_UBF_ASYNC_SAFE); if (bds.stop == Qtrue) { /* execute trap handler, but exception was not raised. */ |