summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorheikki@hundin.mysql.fi <>2005-03-03 17:20:05 +0200
committerheikki@hundin.mysql.fi <>2005-03-03 17:20:05 +0200
commit47440f4b5a9fdc346faff4d3fffd5d0cbe8a61ca (patch)
tree64a2b84a3e58cfe4a273619bb72c1c969e80f5af
parentce553fc2fe5c3bb751f65819ebd7a1922dc745f2 (diff)
downloadmariadb-git-47440f4b5a9fdc346faff4d3fffd5d0cbe8a61ca.tar.gz
os0file.c:
AIX 5.1 after security patch ML7 seems to contain a bug that instead of EEXIST it sets errno to 0 if a file creation fails because the file already exists. Work around that bug by interpreting errno 0 in AIX as EEXIST.
-rw-r--r--innobase/os/os0file.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/innobase/os/os0file.c b/innobase/os/os0file.c
index cadf1c0385f..334452e09ae 100644
--- a/innobase/os/os0file.c
+++ b/innobase/os/os0file.c
@@ -291,6 +291,15 @@ os_file_get_last_error(void)
return(OS_FILE_NOT_FOUND);
} else if (err == EEXIST) {
return(OS_FILE_ALREADY_EXISTS);
+#ifdef UNIV_AIX
+ } else if (err == 0) {
+ fprintf(stderr,
+"InnoDB: errno is 0. Since AIX 5.1 after security patch ML7 erroneously\n"
+"InnoDB: sets errno to 0 when it should be EEXIST, we assume that the real\n"
+"InnoDB: error here was EEXIST.\n");
+
+ return(OS_FILE_ALREADY_EXISTS);
+#endif
} else {
return(100 + err);
}