summaryrefslogtreecommitdiff
path: root/mysys/my_read.c
diff options
context:
space:
mode:
authorunknown <guilhem@mysqlwin32.>2008-02-02 00:01:31 +0100
committerunknown <guilhem@mysqlwin32.>2008-02-02 00:01:31 +0100
commit4a1763e4287724421720e174f938d7303ad07c04 (patch)
tree31abb1520554ab9ab32a14cefc1c3ce72a6084f3 /mysys/my_read.c
parent16f92309e43e431f60826bdbf4660d5ded157903 (diff)
downloadmariadb-git-4a1763e4287724421720e174f938d7303ad07c04.tar.gz
Fix for Windows-specific bugs:
- one which led REDO_INSERT_ROW_BLOBS to fail to apply - one excess close ("-1 file left open") Don't need maria-path option / environment variable. Fixes for ma_test_all-t to run under Windows. Port of ma_test_recovery to Perl, written by Jani. storage/maria/unittest/ma_test_recovery.expected: Rename: storage/maria/ma_test_recovery.expected -> storage/maria/unittest/ma_test_recovery.expected mysys/my_pread.c: Fix for Windows-specific bug (maria_read_log -a failed during ma_test_all-t): Windows does not have pread() so the branch setting HA_ERR_FILE_TOO_SHORT was not compiled in, broke applying of REDO_INSERT_ROW_BLOBS. After fixing that, it appeared that in my Windows machine, errno is not changed in case of EOF; as we read it we have to reset it at start. The changed to readbytes!=-1 is to detect EOF mysys/my_read.c: The change to readbytes!=-1 is to detect EOF storage/maria/ma_loghandler.c: Fix for Windows-specific bug: as we don't open the directory we should not close it. storage/maria/ma_page.c: This is C, cannot declare variable after instruction. storage/maria/ma_test_recovery: ma_test_recovery.expected moved storage/maria/unittest/ma_test_all-t: Can now safely guess maria_path so don't need the command-line option or environment variable. Port to Windows (.exe, different locations of executables); can guess suffix, don't need --suffix. storage/maria/unittest/ma_test_recovery.pl: Perl version of ma_test_recovery, written by Jani. Will deprecate the shell version.
Diffstat (limited to 'mysys/my_read.c')
-rw-r--r--mysys/my_read.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/mysys/my_read.c b/mysys/my_read.c
index 375e0acc144..8e098924e43 100644
--- a/mysys/my_read.c
+++ b/mysys/my_read.c
@@ -43,11 +43,11 @@ size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags)
for (;;)
{
- errno= 0; /* Linux doesn't reset this */
+ errno= 0; /* Linux, Windows don't reset this on EOF/success */
if ((readbytes= read(Filedes, Buffer, Count)) != Count)
{
my_errno= errno;
- if (errno == 0 || (readbytes == (size_t) -1 &&
+ if (errno == 0 || (readbytes != (size_t) -1 &&
(MyFlags & (MY_NABP | MY_FNABP))))
my_errno= HA_ERR_FILE_TOO_SHORT;
DBUG_PRINT("warning",("Read only %d bytes off %lu from %d, errno: %d",