ITS#8192 fix reference to EINTR on WIN32 from ITS#8106

mdb.RE/0.9
Howard Chu 9 years ago
parent c4ae054bce
commit d139771b43
  1. 4
      libraries/liblmdb/mdb.c

@ -3648,7 +3648,6 @@ mdb_env_write_meta(MDB_txn *txn)
/* Write to the SYNC fd */ /* Write to the SYNC fd */
mfd = env->me_flags & (MDB_NOSYNC|MDB_NOMETASYNC) ? mfd = env->me_flags & (MDB_NOSYNC|MDB_NOMETASYNC) ?
env->me_fd : env->me_mfd; env->me_fd : env->me_mfd;
retry_write:
#ifdef _WIN32 #ifdef _WIN32
{ {
memset(&ov, 0, sizeof(ov)); memset(&ov, 0, sizeof(ov));
@ -3657,12 +3656,15 @@ retry_write:
rc = -1; rc = -1;
} }
#else #else
retry_write:
rc = pwrite(mfd, ptr, len, off); rc = pwrite(mfd, ptr, len, off);
#endif #endif
if (rc != len) { if (rc != len) {
rc = rc < 0 ? ErrCode() : EIO; rc = rc < 0 ? ErrCode() : EIO;
#ifndef _WIN32
if (rc == EINTR) if (rc == EINTR)
goto retry_write; goto retry_write;
#endif
DPUTS("write failed, disk error?"); DPUTS("write failed, disk error?");
/* On a failure, the pagecache still contains the new data. /* On a failure, the pagecache still contains the new data.
* Write some old data back, to prevent it from being used. * Write some old data back, to prevent it from being used.

Loading…
Cancel
Save