mdb_env_set_flags(unopened env): Accept more flags.

Useful for maybe-supported flags where mdb_env_open() could EINVAL.
robust
Hallvard Furuseth 10 years ago committed by Hallvard Furuseth
parent 204637b18d
commit 90d9d096bb
  1. 1
      libraries/liblmdb/lmdb.h
  2. 2
      libraries/liblmdb/mdb.c

@ -727,6 +727,7 @@ void mdb_env_close(MDB_env *env);
* This may be used to set some flags in addition to those from * This may be used to set some flags in addition to those from
* #mdb_env_open(), or to unset these flags. If several threads * #mdb_env_open(), or to unset these flags. If several threads
* change the flags at the same time, the result is undefined. * change the flags at the same time, the result is undefined.
* Most flags cannot be changed after #mdb_env_open().
* @param[in] env An environment handle returned by #mdb_env_create() * @param[in] env An environment handle returned by #mdb_env_create()
* @param[in] flags The flags to change, bitwise OR'ed together * @param[in] flags The flags to change, bitwise OR'ed together
* @param[in] onoff A non-zero value sets the flags, zero clears them. * @param[in] onoff A non-zero value sets the flags, zero clears them.

@ -8715,7 +8715,7 @@ mdb_env_copy(MDB_env *env, const char *path)
int ESECT int ESECT
mdb_env_set_flags(MDB_env *env, unsigned int flag, int onoff) mdb_env_set_flags(MDB_env *env, unsigned int flag, int onoff)
{ {
if ((flag & CHANGEABLE) != flag) if (flag & (env->me_map ? ~CHANGEABLE : ~(CHANGEABLE|CHANGELESS)))
return EINVAL; return EINVAL;
if (onoff) if (onoff)
env->me_flags |= flag; env->me_flags |= flag;

Loading…
Cancel
Save