]> git.sur5r.net Git - openldap/commitdiff
Partially revert ada26306992babeccad0c5443fbd76e28dd24cd6
authorHoward Chu <hyc@symas.com>
Mon, 18 Aug 2014 03:44:53 +0000 (20:44 -0700)
committerHoward Chu <hyc@symas.com>
Mon, 18 Aug 2014 03:44:53 +0000 (20:44 -0700)
Of course, MacOSX only has posix_memalign, and only in recent versions.
(Older versions could use valloc instead. That precludes ever changing
the LMDB pagesize to be different from the OS pagesize.) Not all that
crucial since it only affects mdb_env_copyfd1.

libraries/liblmdb/mdb.c

index 6afd615621cf500a5b5208880c186bda3fa15ca9..74d3678c45e44e75b10967fb7578ad3d4314a558 100644 (file)
@@ -79,17 +79,23 @@ extern int cacheflush(char *addr, int nbytes, int cache);
 #define CACHEFLUSH(addr, bytes, cache)
 #endif
 
+
 #include <errno.h>
 #include <limits.h>
 #include <stddef.h>
 #include <inttypes.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <malloc.h>
 #include <string.h>
 #include <time.h>
 #include <unistd.h>
 
+#if defined(__sun)
+/* Most platforms have posix_memalign, older may only have memalign */
+#define HAVE_MEMALIGN  1
+#include <malloc.h>
+#endif
+
 #if !(defined(BYTE_ORDER) || defined(__BYTE_ORDER))
 #include <netinet/in.h>
 #include <resolv.h>    /* defines BYTE_ORDER on HPUX and Solaris */
@@ -8480,9 +8486,15 @@ mdb_env_copyfd1(MDB_env *env, HANDLE fd)
 #else
        pthread_mutex_init(&my.mc_mutex, NULL);
        pthread_cond_init(&my.mc_cond, NULL);
+#ifdef HAVE_MEMALIGN
        my.mc_wbuf[0] = memalign(env->me_os_psize, MDB_WBUF*2);
        if (my.mc_wbuf[0] == NULL)
                return errno;
+#else
+       rc = posix_memalign((void **)&my.mc_wbuf[0], env->me_os_psize, MDB_WBUF*2);
+       if (rc)
+               return rc;
+#endif
 #endif
        memset(my.mc_wbuf[0], 0, MDB_WBUF*2);
        my.mc_wbuf[1] = my.mc_wbuf[0] + MDB_WBUF;