X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=bfile%2Fmfile.c;h=dfd60d238e7df13a05798a0e6700189651894991;hb=3fb2ce9f740725e9e36d35f9dcb15b52edbe475f;hp=8443799752b5eb9597406ec032b66c7e0f57ba66;hpb=2771f5feddda09bed04d609683bf95df053924a4;p=idzebra-moved-to-github.git diff --git a/bfile/mfile.c b/bfile/mfile.c index 8443799..dfd60d2 100644 --- a/bfile/mfile.c +++ b/bfile/mfile.c @@ -4,7 +4,13 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: mfile.c,v $ - * Revision 1.18 1996-04-09 06:47:30 adam + * Revision 1.20 1996-05-14 12:10:16 quinn + * Bad areadef scan + * + * Revision 1.19 1996/05/01 07:16:30 quinn + * Fixed ancient bug. + * + * Revision 1.18 1996/04/09 06:47:30 adam * Function scan_areadef doesn't use sscanf (%n fails on this Linux). * * Revision 1.17 1996/03/20 13:29:11 quinn @@ -131,7 +137,7 @@ static int scan_areadef(MFile_area ma, const char *name) else if (*ad == '+') ad++; size = 0; - if (*ad <= '0' || *ad >= '9') + if (*ad < '0' || *ad > '9') { logf (LOG_FATAL, "Missing size after path: %s", ad0); return -1; @@ -169,7 +175,7 @@ static int file_position(MFile mf, int pos, int offset) (c < mf->no_files -1 && pos > mf->files[c].top)) { c = 0; - while (mf->files[c].top >= 0 && mf->files[c].top < pos) + while (c + 1 < mf->no_files && mf->files[c].top < pos) { off += mf->files[c].blocks; c++; @@ -376,7 +382,7 @@ MFile mf_open(MFile_area ma, const char *name, int block_size, int wflag) for (i = 0; i < new->no_files; i++) { new->files[i].blocks = new->files[i].bytes / new->blocksize; - if (i == new->no_files) + if (i == new->no_files - 1) new->files[i].top = -1; else new->files[i].top = i ? (new->files[i-1].top + new->files[i].blocks)