Alexandre Julliard : include: Fix setjmp() support with 32-bit ucrtbase.

Alexandre Julliard julliard at winehq.org
Fri Nov 6 14:15:24 CST 2020


Module: wine
Branch: master
Commit: 3d72d2600fc4fc998670d5200e92f2e79e094fb8
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=3d72d2600fc4fc998670d5200e92f2e79e094fb8

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Nov  6 12:11:17 2020 +0100

include: Fix setjmp() support with 32-bit ucrtbase.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/msvcrt/setjmp.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/include/msvcrt/setjmp.h b/include/msvcrt/setjmp.h
index 4b737036296..4209d6c6fd7 100644
--- a/include/msvcrt/setjmp.h
+++ b/include/msvcrt/setjmp.h
@@ -143,18 +143,30 @@ typedef _JBTYPE jmp_buf[_JBLEN];
 extern "C" {
 #endif
 
-int __cdecl _setjmp(jmp_buf);
 void __cdecl longjmp(jmp_buf,int);
 
-#if defined(_WIN64) && defined(__GNUC__)
+#ifdef _WIN64
 # ifdef _UCRT
 #  define _setjmpex __intrinsic_setjmpex
 # endif
+# ifdef __GNUC__
 int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmpex(jmp_buf,void*);
 # define setjmp(buf)   _setjmpex(buf,__builtin_frame_address(0))
 # define setjmpex(buf) _setjmpex(buf,__builtin_frame_address(0))
-#else
-# define setjmp _setjmp
+# endif
+#else  /* _WIN64 */
+# ifdef _UCRT
+#  define _setjmp __intrinsic_setjmp
+# endif
+# ifdef __GNUC__
+int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp(jmp_buf);
+# else
+int __cdecl _setjmp(jmp_buf);
+# endif
+#endif  /* _WIN64 */
+
+#ifndef setjmp
+#define setjmp _setjmp
 #endif
 
 #ifdef __cplusplus




More information about the wine-cvs mailing list