| /** | 
 |  * This file has no copyright assigned and is placed in the Public Domain. | 
 |  * This file is part of the mingw-w64 runtime package. | 
 |  * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 |  */ | 
 |  | 
 | #include <assert.h> | 
 | #include <stdlib.h> | 
 |  | 
 | /* _wassert is not available on XP, so forward it to _assert if needed */ | 
 | __MINGW_ATTRIB_NORETURN | 
 | static void __cdecl emu__wassert(const wchar_t *_Message, const wchar_t *_File, unsigned _Line) | 
 | { | 
 |     char *message = NULL, *file = NULL; | 
 |     size_t len; | 
 |  | 
 |     if ((len = wcstombs(NULL, _Message, 0)) != (size_t)-1) | 
 |     { | 
 |         message = malloc(len + 1); | 
 |         wcstombs(message, _Message, len + 1); | 
 |     } | 
 |  | 
 |     if ((len = wcstombs(NULL, _File, 0)) != (size_t)-1) | 
 |     { | 
 |         file = malloc(len + 1); | 
 |         wcstombs(file, _File, len + 1); | 
 |     } | 
 |  | 
 |     _assert(message, file, _Line); | 
 | } | 
 |  | 
 | #define NORETURN | 
 | #define RETT void | 
 | #define FUNC _wassert | 
 | #define ARGS const wchar_t * message, const wchar_t * file, unsigned line | 
 | #define CALL message, file, line | 
 | #include "msvcrt_or_emu_glue.h" |