captive_new(r);
if (MAP_FAILED==(r->base=mmap(
- NULL,CAPTIVE_ROUND_UP64(file_info->size,getpagesize()),PROT_READ|PROT_WRITE,MAP_ANONYMOUS|MAP_PRIVATE,-1,0))) {
+ NULL, /* start */
+ CAPTIVE_ROUND_UP64(file_info->size,getpagesize()), /* length */
+ PROT_READ|PROT_WRITE,
+ MAP_ANONYMOUS|MAP_PRIVATE /* flags */
+ |MAP_NORESERVE, /* We will not probably not read the whole cabinet. */
+ -1, /* fd; ignored due to MAP_ANONYMOUS */
+ 0))) { /* offset; ignored due to MAP_ANONYMOUS */
g_free(r);
g_return_val_if_reached(NULL);
}
NULL, /* start */
PAGE_SIZE+size_new+PAGE_SIZE, /* length; leading and trailing boundary check pages */
PROT_READ|PROT_WRITE, /* prot; read/write must be possible although write is not guaranteed to be flushed yet */
- MAP_PRIVATE|MAP_ANONYMOUS, /* flags */
+ MAP_PRIVATE|MAP_ANONYMOUS /* flags */
+ |MAP_NORESERVE, /* At least ext2fsd maps the whole disk. */
-1, /* fd; ignored due to MAP_ANONYMOUS */
0); /* offset; ignored due to MAP_ANONYMOUS */
if (base==MAP_FAILED)