diff options
author | reggie@big_geek. <> | 2006-06-05 13:37:06 -0500 |
---|---|---|
committer | reggie@big_geek. <> | 2006-06-05 13:37:06 -0500 |
commit | 95cd6d2814fcad178d4e5eb6d63feac046b2fb81 (patch) | |
tree | a7a58e347bbe5aa114b0de6989ba905bb8b38ee9 /mysys | |
parent | a83580b33aa66d703cc70a8745b5715d0fed7396 (diff) | |
download | mariadb-git-95cd6d2814fcad178d4e5eb6d63feac046b2fb81.tar.gz |
Bug #18275 invalid file descriptor causes crash on windows
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/my_init.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/mysys/my_init.c b/mysys/my_init.c index 9b8d4db172f..8346fab95da 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -245,6 +245,22 @@ void setEnvString(char *ret, const char *name, const char *value) DBUG_VOID_RETURN ; } +/* + my_paramter_handler + Invalid paramter handler we will use instead of the one "baked" into the CRT + for MSC v8. This one just prints out what invalid parameter was encountered. + By providing this routine, routines like lseek will return -1 when we expect them + to instead of crash. +*/ +void my_parameter_handler(const wchar_t * expression, const wchar_t * function, + const wchar_t * file, unsigned int line, + uintptr_t pReserved) +{ + DBUG_PRINT("my",("Expression: %s function: %s file: %s, line: %d", + expression, function, file, line)); +} + + static void my_win_init(void) { HKEY hSoftMysql ; @@ -262,12 +278,18 @@ static void my_win_init(void) setlocale(LC_CTYPE, ""); /* To get right sortorder */ -#if defined(_MSC_VER) && (_MSC_VER < 1300) +#if defined(_MSC_VER) +#if _MSC_VER < 1300 /* Clear the OS system variable TZ and avoid the 100% CPU usage Only for old versions of Visual C++ */ _putenv( "TZ=" ); +#endif +#if _MSC_VER >= 1400 + /* this is required to make crt functions return -1 appropriately */ + _set_invalid_parameter_handler(my_parameter_handler); +#endif #endif _tzset(); |