56 #if !_GL_CONFIG_H_INCLUDED
57 #error "Please include config.h first."
60 #define DEFAULT_HANDLING 0
61 #define HAIRY_LIBRARY_HANDLING 1
62 #define SANE_LIBRARY_HANDLING 2
64 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
65 && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING)
69 # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
79 extern void gl_msvc_inval_ensure_handler (
void);
85 # define TRY_MSVC_INVAL \
88 gl_msvc_inval_ensure_handler (); \
90 # define CATCH_MSVC_INVAL \
92 # define DONE_MSVC_INVAL \
109 # define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0)
111 # if defined _MSC_VER
125 extern void gl_msvc_inval_ensure_handler (
void);
131 # define TRY_MSVC_INVAL \
134 gl_msvc_inval_ensure_handler (); \
136 # define CATCH_MSVC_INVAL \
137 __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \
138 ? EXCEPTION_EXECUTE_HANDLER \
139 : EXCEPTION_CONTINUE_SEARCH)
140 # define DONE_MSVC_INVAL \
154 struct gl_msvc_inval_per_thread
170 extern void gl_msvc_inval_ensure_handler (
void);
173 extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (
void);
179 # define TRY_MSVC_INVAL \
182 struct gl_msvc_inval_per_thread *msvc_inval_current; \
183 gl_msvc_inval_ensure_handler (); \
184 msvc_inval_current = gl_msvc_inval_current (); \
186 if (setjmp (msvc_inval_current->restart) == 0) \
189 msvc_inval_current->restart_valid = 1;
190 # define CATCH_MSVC_INVAL \
193 msvc_inval_current->restart_valid = 0; \
199 msvc_inval_current->restart_valid = 0;
200 # define DONE_MSVC_INVAL \
215 # define TRY_MSVC_INVAL \
219 # define CATCH_MSVC_INVAL \
221 # define DONE_MSVC_INVAL \