X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmsvc-inval.c;h=1873e23be4c9d46d95a8b7bea7ea5a07db430829;hb=533101a268dc5015a140ff4695d8eeb04fbe57b6;hp=ba3c799fd9833ba35f25eeb94ccba87b894f3d04;hpb=37398f7c95b0435a583adc6ee2d35ccdf06411e4;p=gnulib.git diff --git a/lib/msvc-inval.c b/lib/msvc-inval.c index ba3c799fd..1873e23be 100644 --- a/lib/msvc-inval.c +++ b/lib/msvc-inval.c @@ -1,5 +1,5 @@ /* Invalid parameter handler for MSVC runtime libraries. - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -12,34 +12,51 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + with this program; if not, see . */ #include /* 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 declarations of the Win32 API functions. */ -# define WIN32_LEAN_AND_MEAN -# include +/* Get _invalid_parameter_handler type and _set_invalid_parameter_handler + declaration. */ +# include -# if defined _MSC_VER +# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING -static void cdecl +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) { - RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # else +/* Get declarations of the native Windows API functions. */ +# define WIN32_LEAN_AND_MEAN +# include + +# if defined _MSC_VER + +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) +{ + RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); +} + +# else + /* An index to thread-local storage. */ static DWORD tls_index; static int tls_initialized /* = 0 */; @@ -77,7 +94,7 @@ gl_msvc_inval_current (void) } } -static void cdecl +static void __cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, @@ -93,6 +110,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 */;