aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/data.c b/src/data.c
index 415a8962350..6151d815b29 100644
--- a/src/data.c
+++ b/src/data.c
@@ -3207,18 +3207,19 @@ syms_of_data (void)
3207 XSYMBOL (intern_c_string ("most-negative-fixnum"))->constant = 1; 3207 XSYMBOL (intern_c_string ("most-negative-fixnum"))->constant = 1;
3208} 3208}
3209 3209
3210#ifndef FORWARD_SIGNAL_TO_MAIN_THREAD 3210static _Noreturn void
3211_Noreturn 3211handle_arith_signal (int sig)
3212#endif
3213static void
3214arith_error (int signo)
3215{ 3212{
3216 sigsetmask (SIGEMPTYMASK); 3213 sigsetmask (SIGEMPTYMASK);
3217
3218 SIGNAL_THREAD_CHECK (signo);
3219 xsignal0 (Qarith_error); 3214 xsignal0 (Qarith_error);
3220} 3215}
3221 3216
3217static void
3218deliver_arith_signal (int sig)
3219{
3220 handle_on_main_thread (sig, handle_arith_signal);
3221}
3222
3222void 3223void
3223init_data (void) 3224init_data (void)
3224{ 3225{
@@ -3230,5 +3231,5 @@ init_data (void)
3230 if (!initialized) 3231 if (!initialized)
3231 return; 3232 return;
3232#endif /* CANNOT_DUMP */ 3233#endif /* CANNOT_DUMP */
3233 signal (SIGFPE, arith_error); 3234 signal (SIGFPE, deliver_arith_signal);
3234} 3235}