summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorJon Olav Hauglid <jon.hauglid@sun.com>2010-06-30 08:47:49 +0200
committerJon Olav Hauglid <jon.hauglid@sun.com>2010-06-30 08:47:49 +0200
commit83920a72fd2c9992625d7a135020a39f98365ec4 (patch)
tree28bbf2071c911ca8d0cf2e1f8e674991e4106b90 /mysys
parentc3b1a5751ac0e9acbad30ce680255638e5f1825a (diff)
parente564e35d0699c3305b32757941344b542acd1656 (diff)
downloadmariadb-git-83920a72fd2c9992625d7a135020a39f98365ec4.tar.gz
merge from mysql-trunk-bugfixing
Diffstat (limited to 'mysys')
-rw-r--r--mysys/my_delete.c32
-rw-r--r--mysys/my_mmap.c18
2 files changed, 34 insertions, 16 deletions
diff --git a/mysys/my_delete.c b/mysys/my_delete.c
index edee1c4e875..4a23fedb5ab 100644
--- a/mysys/my_delete.c
+++ b/mysys/my_delete.c
@@ -93,23 +93,33 @@ int nt_share_delete(const char *name, myf MyFlags)
name, buf, errno));
break;
}
-
+
if (errno == ERROR_FILE_NOT_FOUND)
{
- my_errno= ENOENT; // marking, that `name' doesn't exist
+ my_errno= ENOENT; // marking, that `name' doesn't exist
}
else if (errno == 0)
{
- if (DeleteFile(buf))
- DBUG_RETURN(0);
- else if ((my_errno= GetLastError()) == 0)
- my_errno= ENOENT; // marking, that `buf' doesn't exist
- } else
- my_errno= errno;
-
+ if (DeleteFile(buf))
+ DBUG_RETURN(0);
+ /*
+ The below is more complicated than necessary. For some reason, the
+ assignment to my_errno clears the error number, which is retrieved
+ by GetLastError() (VC2005EE). Assigning to errno first, allows to
+ retrieve the correct value.
+ */
+ errno= GetLastError();
+ if (errno == 0)
+ my_errno= ENOENT; // marking, that `buf' doesn't exist
+ else
+ my_errno= errno;
+ }
+ else
+ my_errno= errno;
+
if (MyFlags & (MY_FAE+MY_WME))
- my_error(EE_DELETE, MYF(ME_BELL + ME_WAITTANG + (MyFlags & ME_NOINPUT)),
- name, my_errno);
+ my_error(EE_DELETE, MYF(ME_BELL + ME_WAITTANG + (MyFlags & ME_NOINPUT)),
+ name, my_errno);
DBUG_RETURN(-1);
}
#endif
diff --git a/mysys/my_mmap.c b/mysys/my_mmap.c
index 303d8efaf30..82ee1562bc2 100644
--- a/mysys/my_mmap.c
+++ b/mysys/my_mmap.c
@@ -38,13 +38,16 @@ void *my_mmap(void *addr, size_t len, int prot,
HANDLE hFileMap;
LPVOID ptr;
HANDLE hFile= (HANDLE)my_get_osfhandle(fd);
+ DBUG_ENTER("my_mmap");
+ DBUG_PRINT("mysys", ("map fd: %d", fd));
+
if (hFile == INVALID_HANDLE_VALUE)
- return MAP_FAILED;
+ DBUG_RETURN(MAP_FAILED);
hFileMap=CreateFileMapping(hFile, &mmap_security_attributes,
PAGE_READWRITE, 0, (DWORD) len, NULL);
if (hFileMap == 0)
- return MAP_FAILED;
+ DBUG_RETURN(MAP_FAILED);
ptr=MapViewOfFile(hFileMap,
prot & PROT_WRITE ? FILE_MAP_WRITE : FILE_MAP_READ,
@@ -59,14 +62,19 @@ void *my_mmap(void *addr, size_t len, int prot,
CloseHandle(hFileMap);
if (ptr)
- return ptr;
+ {
+ DBUG_PRINT("mysys", ("mapped addr: %p", ptr));
+ DBUG_RETURN(ptr);
+ }
- return MAP_FAILED;
+ DBUG_RETURN(MAP_FAILED);
}
int my_munmap(void *addr, size_t len)
{
- return UnmapViewOfFile(addr) ? 0 : -1;
+ DBUG_ENTER("my_munmap");
+ DBUG_PRINT("mysys", ("unmap addr: %p", addr));
+ DBUG_RETURN(UnmapViewOfFile(addr) ? 0 : -1);
}
int my_msync(int fd, void *addr, size_t len, int flags)