Fix sequence logic bug, and satisfies() logic fix/cleanup.
[ccan] / ccan / tdb / io.c
index 172ab69d8c9e69ae7f160071567c4d885ac7848c..d8140fea31d3655146b697a1dd0959502bafa33e 100644 (file)
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
-
 #include "tdb_private.h"
+#ifndef MAX
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#endif
 
 /* check for an out of bounds access - if it is out of bounds then
    see if the database has been expanded by someone else and expand
@@ -187,7 +189,7 @@ int tdb_munmap(struct tdb_context *tdb)
        if (tdb->flags & TDB_INTERNAL)
                return 0;
 
-#ifdef HAVE_MMAP
+#if HAVE_MMAP
        if (tdb->map_ptr) {
                int ret = munmap(tdb->map_ptr, tdb->map_size);
                if (ret != 0)
@@ -203,11 +205,11 @@ void tdb_mmap(struct tdb_context *tdb)
        if (tdb->flags & TDB_INTERNAL)
                return;
 
-#ifdef HAVE_MMAP
+#if HAVE_MMAP
        if (!(tdb->flags & TDB_NOMMAP)) {
                tdb->map_ptr = mmap(NULL, tdb->map_size, 
                                    PROT_READ|(tdb->read_only? 0:PROT_WRITE), 
-                                   MAP_SHARED|MAP_FILE, tdb->fd, 0);
+                                   MAP_SHARED, tdb->fd, 0);
 
                /*
                 * NB. When mmap fails it returns MAP_FAILED *NOT* NULL !!!!
@@ -381,11 +383,7 @@ unsigned char *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len
        unsigned char *buf;
 
        /* some systems don't like zero length malloc */
-       if (len == 0) {
-               len = 1;
-       }
-
-       if (!(buf = (unsigned char *)malloc(len))) {
+       if (!(buf = (unsigned char *)malloc(len ? len : 1))) {
                /* Ensure ecode is set for log fn. */
                tdb->ecode = TDB_ERR_OOM;
                TDB_LOG((tdb, TDB_DEBUG_ERROR,"tdb_alloc_read malloc failed len=%d (%s)\n",