acme, sam: handle >1GB files correctly

TBR=rsc
https://codereview.appspot.com/74060043
This commit is contained in:
Russ Cox 2014-03-13 18:46:28 -04:00
parent e78ed7a67b
commit 219cf22d68
4 changed files with 10 additions and 4 deletions

View file

@ -69,7 +69,7 @@ struct Range
struct Block
{
uint addr; /* disk address in bytes */
vlong addr; /* disk address in bytes */
union
{
uint n; /* number of used runes in block */
@ -80,7 +80,7 @@ struct Block
struct Disk
{
int fd;
uint addr; /* length of temp file */
vlong addr; /* length of temp file */
Block *free[Maxblock/Blockincr+1];
};

View file

@ -82,6 +82,9 @@ disknewblock(Disk *d, uint n)
b = blist;
blist = b->u.next;
b->addr = d->addr;
if(d->addr+size < d->addr){
error("temp file overflow");
}
d->addr += size;
}
b->u.n = n;

View file

@ -75,6 +75,9 @@ disknewblock(Disk *d, uint n)
b = blist;
blist = b->u.next;
b->addr = d->addr;
if(d->addr+size < d->addr){
panic("temp file overflow");
}
d->addr += size;
}
b->u.n = n;

View file

@ -113,7 +113,7 @@ enum
struct Block
{
uint addr; /* disk address in bytes */
vlong addr; /* disk address in bytes */
union {
uint n; /* number of used runes in block */
Block *next; /* pointer to next in free list */
@ -123,7 +123,7 @@ struct Block
struct Disk
{
int fd;
uint addr; /* length of temp file */
vlong addr; /* length of temp file */
Block *free[Maxblock/Blockincr+1];
};