X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=bfile%2Fmfile.c;h=8b67521f629fb4b009cf2bac3baf3c053c919274;hb=c3606d38ea186bd31331c474a4ddf5539656d99c;hp=f24491e92639bb7e0182b3308b7e2121c6cfd4ba;hpb=2893b768ec1fa60c3a018f8b7780d9297e005a31;p=idzebra-moved-to-github.git diff --git a/bfile/mfile.c b/bfile/mfile.c index f24491e..8b67521 100644 --- a/bfile/mfile.c +++ b/bfile/mfile.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: mfile.c,v $ - * Revision 1.41.2.1 2002-07-23 12:33:21 adam + * Revision 1.41.2.2 2002-08-02 10:34:27 adam + * mf_write fix. version update + * + * Revision 1.41.2.1 2002/07/23 12:33:21 adam * Towards 1.1.3 * * Revision 1.41.4.1 2002/07/23 09:32:41 adam @@ -601,10 +604,11 @@ int mf_write(MFile mf, int no, int offset, int nbytes, const void *buf) /* file needs to grow */ while (ps >= mf->files[mf->cur_file].blocks) { + off_t needed = (ps - mf->files[mf->cur_file].blocks + 1) * + mf->blocksize; /* file overflow - allocate new file */ if (mf->files[mf->cur_file].dir->max_bytes >= 0 && - (ps - mf->files[mf->cur_file].blocks + 1) * mf->blocksize > - mf->files[mf->cur_file].dir->avail_bytes) + needed > mf->files[mf->cur_file].dir->avail_bytes) { /* cap off file? */ if ((nblocks = mf->files[mf->cur_file].dir->avail_bytes / @@ -630,7 +634,7 @@ int mf_write(MFile mf, int no, int offset, int nbytes, const void *buf) /* get other bit */ logf (LOG_DEBUG, "Creating new file."); for (dp = mf->ma->dirs; dp && dp->max_bytes >= 0 && - dp->avail_bytes < mf->min_bytes_creat; dp = dp->next); + dp->avail_bytes < needed; dp = dp->next); if (!dp) { logf (LOG_FATAL, "Cannot allocate more space for %s",