mirror of
https://github.com/ckolivas/lrzip.git
synced 2025-12-06 07:12:00 +01:00
Only retry mmapping if it's due to a memory allocation error.
This commit is contained in:
parent
7acd389382
commit
db4f9f5fea
4
rzip.c
4
rzip.c
|
|
@ -826,6 +826,8 @@ retry:
|
||||||
sb.buf_low = mmap(NULL, st->mmap_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
sb.buf_low = mmap(NULL, st->mmap_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||||
/* Better to shrink the window to the largest size that works than fail */
|
/* Better to shrink the window to the largest size that works than fail */
|
||||||
if (sb.buf_low == MAP_FAILED) {
|
if (sb.buf_low == MAP_FAILED) {
|
||||||
|
if (unlikely(errno != ENOMEM))
|
||||||
|
fatal("Failed to mmap %s\n", control.infile);
|
||||||
st->mmap_size = st->mmap_size / 10 * 9;
|
st->mmap_size = st->mmap_size / 10 * 9;
|
||||||
round_to_page(&st->mmap_size);
|
round_to_page(&st->mmap_size);
|
||||||
if (unlikely(!st->mmap_size))
|
if (unlikely(!st->mmap_size))
|
||||||
|
|
@ -838,6 +840,8 @@ retry:
|
||||||
/* NOTE The buf is saved here for !STDIN mode */
|
/* NOTE The buf is saved here for !STDIN mode */
|
||||||
sb.buf_low = (uchar *)mmap(sb.buf_low, st->mmap_size, PROT_READ, MAP_SHARED, fd_in, offset);
|
sb.buf_low = (uchar *)mmap(sb.buf_low, st->mmap_size, PROT_READ, MAP_SHARED, fd_in, offset);
|
||||||
if (sb.buf_low == MAP_FAILED) {
|
if (sb.buf_low == MAP_FAILED) {
|
||||||
|
if (unlikely(errno != ENOMEM))
|
||||||
|
fatal("Failed to mmap %s\n", control.infile);
|
||||||
st->mmap_size = st->mmap_size / 10 * 9;
|
st->mmap_size = st->mmap_size / 10 * 9;
|
||||||
round_to_page(&st->mmap_size);
|
round_to_page(&st->mmap_size);
|
||||||
if (unlikely(!st->mmap_size))
|
if (unlikely(!st->mmap_size))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue