Move the check to ensure the locate database has the minimum required size

when using mmap() before invoking mmap().  This avoids a confusing error
message when locate is invoked against a zero-size database after the
recent change to make mmap() fail requests to map 0 bytes.

Submitted by:	Jaakko Heinonen  jh of saunalahti dot fi
Approved by:	re (kensmith)
MFC after:	1 week
This commit is contained in:
jhb 2009-07-24 13:40:25 +00:00
parent d607f4c3e3
commit 4064b20ece
2 changed files with 2 additions and 3 deletions

View File

@ -154,9 +154,6 @@ fastfind
/* init bigram table */ /* init bigram table */
#ifdef FF_MMAP #ifdef FF_MMAP
if (len < (2*NBG))
errx(1, "database too small: %s", database);
for (c = 0, p = bigram1, s = bigram2; c < NBG; c++, len-= 2) { for (c = 0, p = bigram1, s = bigram2; c < NBG; c++, len-= 2) {
p[c] = check_bigram_char(*paddr++); p[c] = check_bigram_char(*paddr++);
s[c] = check_bigram_char(*paddr++); s[c] = check_bigram_char(*paddr++);

View File

@ -291,6 +291,8 @@ search_mmap(db, s)
fstat(fd, &sb) == -1) fstat(fd, &sb) == -1)
err(1, "`%s'", db); err(1, "`%s'", db);
len = sb.st_size; len = sb.st_size;
if (len < (2*NBG))
errx(1, "database too small: %s", db);
if ((p = mmap((caddr_t)0, (size_t)len, if ((p = mmap((caddr_t)0, (size_t)len,
PROT_READ, MAP_SHARED, PROT_READ, MAP_SHARED,