]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix 'debug-timer-check' on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Mon, 30 May 2022 17:51:19 +0000 (20:51 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 30 May 2022 17:51:19 +0000 (20:51 +0300)
* src/w32proc.c (w32_raise): New function.
* src/atimer.c (raise) [WINDOWSNT]: Redirect to 'w32_raise'.

src/atimer.c
src/w32proc.c

index c26904e1f010bb5fd66eed112d5e47df88c86fad..18301120ffe39d860eb6ab7e9e3ca837857a0be2 100644 (file)
@@ -18,6 +18,10 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 
+#ifdef WINDOWSNT
+#define raise(s) w32_raise(s)
+#endif
+
 #include "lisp.h"
 #include "keyboard.h"
 #include "syssignal.h"
index 781a19f480f9140eb9907e5e60c39865fff2ae4d..7acfba64d70b7f4732724782bc439855ce93fa49 100644 (file)
@@ -63,6 +63,8 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #include "w32term.h"
 #include "coding.h"
 
+void w32_raise (int);
+
 #define RVA_TO_PTR(var,section,filedata) \
   ((void *)((section)->PointerToRawData                                        \
            + ((DWORD_PTR)(var) - (section)->VirtualAddress)            \
@@ -311,6 +313,21 @@ sigismember (const sigset_t *set, int signo)
   return (*set & (1U << signo)) != 0;
 }
 
+/* A fuller emulation of 'raise', which supports signals that MS
+   runtime doesn't know about.  */
+void
+w32_raise (int signo)
+{
+  if (!(signo == SIGCHLD || signo == SIGALRM || signo == SIGPROF))
+    raise (signo);
+
+  /* Call the handler directly for the signals that we handle
+     ourselves.  */
+  signal_handler handler = sig_handlers[signo];
+  if (!(handler == SIG_DFL || handler == SIG_IGN || handler == SIG_ERR))
+    handler (signo);
+}
+
 pid_t
 getpgrp (void)
 {