diff options
author | Bruno Haible <bruno@clisp.org> | 2011-09-25 23:08:45 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2011-09-25 23:08:45 +0200 |
commit | 65ef690d41c05b33dd95820846cf1106dc2292e5 (patch) | |
tree | d15c5e3f8f4565bc13752da1d2c06c4ceec4b872 /lib/msvc-inval.c | |
parent | 37398f7c95b0435a583adc6ee2d35ccdf06411e4 (diff) | |
download | gnulib-65ef690d41c05b33dd95820846cf1106dc2292e5.tar.gz |
msvc-inval: Allow three invalid parameter handling modes.
* lib/msvc-inval.h: Don't include <stdlib.h> here.
(DEFAULT_HANDLING, HAIRY_LIBRARY_HANDLING, SANE_LIBRARY_HANDLING): New
macros.
(gl_msvc_inval_ensure_handler, TRY_MSVC_INVAL, CATCH_MSVC_INVAL,
DONE_MSVC_INVAL): Implement DEFAULT_HANDLING. Treat
SANE_LIBRARY_HANDLING as a no-op.
* lib/msvc-inval.c: Treat SANE_LIBRARY_HANDLING as a no-op. Include
<stdlib.h>.
(gl_msvc_invalid_parameter_handler): Implement DEFAULT_HANDLING.
Diffstat (limited to 'lib/msvc-inval.c')
-rw-r--r-- | lib/msvc-inval.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/lib/msvc-inval.c b/lib/msvc-inval.c index ba3c799fd9..31dbeea449 100644 --- a/lib/msvc-inval.c +++ b/lib/msvc-inval.c @@ -20,13 +20,31 @@ /* Specification. */ #include "msvc-inval.h" -#if HAVE_MSVC_INVALID_PARAMETER_HANDLER +#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ + && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) + +/* Get _invalid_parameter_handler type and _set_invalid_parameter_handler + declaration. */ +# include <stdlib.h> + +# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING + +static void cdecl +gl_msvc_invalid_parameter_handler (const wchar_t *expression, + const wchar_t *function, + const wchar_t *file, + unsigned int line, + uintptr_t dummy) +{ +} + +# else /* Get declarations of the Win32 API functions. */ -# define WIN32_LEAN_AND_MEAN -# include <windows.h> +# define WIN32_LEAN_AND_MEAN +# include <windows.h> -# if defined _MSC_VER +# if defined _MSC_VER static void cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, @@ -38,7 +56,7 @@ gl_msvc_invalid_parameter_handler (const wchar_t *expression, RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } -# else +# else /* An index to thread-local storage. */ static DWORD tls_index; @@ -93,6 +111,8 @@ gl_msvc_invalid_parameter_handler (const wchar_t *expression, RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } +# endif + # endif static int gl_msvc_inval_initialized /* = 0 */; |