X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=fusefile.c;h=30ec7fa284c7ce1f330daaede1de2fb1835ee9b5;hb=6c93ae8d4f1955020adedfa67a43478dba854ab0;hp=f74632a5356b0040f58b4118083bca91a5b9cbc6;hpb=c3822433d020325223dc098393e03131fd91330b;p=rrq%2Ffusefile.git diff --git a/fusefile.c b/fusefile.c index f74632a..30ec7fa 100644 --- a/fusefile.c +++ b/fusefile.c @@ -416,14 +416,17 @@ static int overlay_merge(char *buf,off_t off,size_t size) { p = 0; } for ( ; p < overlay.count && BEG(p) < off+size; p++ ) { + if ( END(p) < off ) { + continue; + } size_t delta = FRAG(p)->size; - if ( BEG(p) > off ) { + if ( BEG(p) < off ) { + delta -= off - BEG(p); + } else { size_t skip = BEG(p) - off; off += skip; size -= skip; buf += skip; - } else { - delta = off - BEG(p); } if ( delta > size ) { delta = size;