diff options
author | unknown <guilhem@mysqlwin32.> | 2008-02-02 00:01:31 +0100 |
---|---|---|
committer | unknown <guilhem@mysqlwin32.> | 2008-02-02 00:01:31 +0100 |
commit | 4a1763e4287724421720e174f938d7303ad07c04 (patch) | |
tree | 31abb1520554ab9ab32a14cefc1c3ce72a6084f3 /mysys/my_read.c | |
parent | 16f92309e43e431f60826bdbf4660d5ded157903 (diff) | |
download | mariadb-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.c | 4 |
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", |