]> git.sur5r.net Git - openldap/commitdiff
Use header when some fields are unspecified
authorHoward Chu <hyc@symas.com>
Tue, 28 Jun 2011 07:15:15 +0000 (00:15 -0700)
committerHoward Chu <hyc@symas.com>
Tue, 28 Jun 2011 07:15:15 +0000 (00:15 -0700)
libraries/libmdb/mdb.c

index 4b27da3ab26c16418db41d162704c46ac26d3a91..63ef4c6a0f6dd09183a8fa562cc522e361bcb998 100644 (file)
@@ -782,6 +782,7 @@ mdbenv_read_meta(MDB_env *env, pgno_t *p_next)
        if (size == env->me_head.mh_psize) {            /* there is only the header */
                if (p_next != NULL)
                        *p_next = 1;
+               env->me_meta.mm_stat.ms_psize = env->me_head.mh_psize;
                return MDB_SUCCESS;             /* new file */
        }
 
@@ -846,8 +847,6 @@ mdbenv_create(MDB_env **env, size_t size)
 {
        MDB_env *e;
 
-       if (!size) return EINVAL;
-
        e = calloc(1, sizeof(*e));
        if (!e) return ENOMEM;
 
@@ -879,6 +878,9 @@ mdbenv_open2(MDB_env *env, unsigned int flags)
                newenv = 1;
        }
 
+       if (!env->me_mapsize)
+               env->me_mapsize = env->me_head.mh_mapsize;
+
        i = MAP_SHARED;
        if (env->me_head.mh_address && (flags & MDB_FIXEDMAP))
                i |= MAP_FIXED;