diff options
Diffstat (limited to 'mysys/my_open.c')
-rw-r--r-- | mysys/my_open.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/mysys/my_open.c b/mysys/my_open.c index 6fe7883b99b..7efaed90e2d 100644 --- a/mysys/my_open.c +++ b/mysys/my_open.c @@ -56,20 +56,20 @@ File my_open(const char *FileName, int Flags, myf MyFlags) } #ifndef __WIN__ if (Flags & O_SHARE) - fd = sopen((my_string) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO, + fd = sopen((char *) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO, MY_S_IREAD | MY_S_IWRITE); else - fd = open((my_string) FileName, Flags | O_BINARY, + fd = open((char *) FileName, Flags | O_BINARY, MY_S_IREAD | MY_S_IWRITE); #else - fd= my_sopen((my_string) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO, + fd= my_sopen((char *) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO, MY_S_IREAD | MY_S_IWRITE); #endif #elif !defined(NO_OPEN_3) fd = open(FileName, Flags, my_umask); /* Normal unix */ #else - fd = open((my_string) FileName, Flags); + fd = open((char *) FileName, Flags); #endif DBUG_RETURN(my_register_filename(fd, FileName, FILE_BY_OPEN, EE_FILENOTFOUND, MyFlags)); @@ -353,7 +353,12 @@ File my_sopen(const char *path, int oflag, int shflag, int pmode) return -1; /* return error to caller */ } - fh= _open_osfhandle((intptr_t)osfh, oflag & (_O_APPEND | _O_RDONLY | _O_TEXT)); + if ((fh= _open_osfhandle((intptr_t)osfh, + oflag & (_O_APPEND | _O_RDONLY | _O_TEXT))) == -1) + { + _dosmaperr(GetLastError()); /* map error */ + CloseHandle(osfh); + } return fh; /* return handle */ } |