Bug #17722 Test 'partition_02myisam' hangs on Windows

The problem where is that Visual Studio 8 includes new security features to help write more secure code.  One of these features is parameter validation.  Many of the CRT functions, including lseek, assert on illegal parameter values in debug builds.  They also call parameter validation callback routines that can be registered.  We solve this problem by defaulting the error value to -1 and then only calling lseek if the fd != -1.

my_seek.c:
  Only call lseek if the fd is not -1 on Windows
parent ecf41eea
......@@ -22,14 +22,15 @@
my_off_t my_seek(File fd, my_off_t pos, int whence,
myf MyFlags __attribute__((unused)))
{
reg1 os_off_t newpos;
reg1 os_off_t newpos= -1;
DBUG_ENTER("my_seek");
DBUG_PRINT("my",("Fd: %d Hpos: %lu Pos: %lu Whence: %d MyFlags: %d",
fd, (ulong) (((ulonglong) pos) >> 32), (ulong) pos,
whence, MyFlags));
DBUG_ASSERT(pos != MY_FILEPOS_ERROR); /* safety check */
newpos=lseek(fd, pos, whence);
if (-1 != fd)
newpos=lseek(fd, pos, whence);
if (newpos == (os_off_t) -1)
{
my_errno=errno;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment