]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/io.c
tdb2: use 64 bit file offsets on 32 bit systems if available.
[ccan] / ccan / tdb2 / io.c
index 240a1c038da368c274363cb3cfcd37945a517a0e..31756de341d8fd43d17a41d57c41284cbb650227 100644 (file)
@@ -48,8 +48,13 @@ void tdb_mmap(struct tdb_context *tdb)
        if (tdb->flags & TDB_NOMMAP)
                return;
 
        if (tdb->flags & TDB_NOMMAP)
                return;
 
-       tdb->file->map_ptr = mmap(NULL, tdb->file->map_size, tdb->mmap_flags,
-                                 MAP_SHARED, tdb->file->fd, 0);
+       /* size_t can be smaller than off_t. */
+       if ((size_t)tdb->file->map_size == tdb->file->map_size) {
+               tdb->file->map_ptr = mmap(NULL, tdb->file->map_size,
+                                         tdb->mmap_flags,
+                                         MAP_SHARED, tdb->file->fd, 0);
+       } else
+               tdb->file->map_ptr = MAP_FAILED;
 
        /*
         * NB. When mmap fails it returns MAP_FAILED *NOT* NULL !!!!
 
        /*
         * NB. When mmap fails it returns MAP_FAILED *NOT* NULL !!!!