diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
index 9c85230a6bcc67b2191ec732b285bd8024310c12..36d50b82bbb587fd07cfbef7a9d00aad78597a59 100644
--- a/libraries/liblmdb/mdb.c
+++ b/libraries/liblmdb/mdb.c
@@ -4499,9 +4499,9 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
 #ifdef O_CLOEXEC	/* Linux: Open file and set FD_CLOEXEC atomically */
 #	define MDB_CLOEXEC		O_CLOEXEC
 #else
-	int fdflags;
 #	define MDB_CLOEXEC		0
 #endif
+	int fdflags;
 #endif
 	int rc;
 	off_t size, rsize;
@@ -4525,10 +4525,10 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
 		}
 		goto fail;
 	}
-#if ! ((MDB_CLOEXEC) || defined(_WIN32))
+#ifndef _WIN32
 	/* Lose record locks when exec*() */
-	if ((fdflags = fcntl(env->me_lfd, F_GETFD) | FD_CLOEXEC) >= 0)
-			fcntl(env->me_lfd, F_SETFD, fdflags);
+	if (!(MDB_CLOEXEC) && (fdflags = fcntl(env->me_lfd, F_GETFD)) != -1)
+			fcntl(env->me_lfd, F_SETFD, fdflags | FD_CLOEXEC);
 #endif
 
 	if (!(env->me_flags & MDB_NOTLS)) {