summaryrefslogtreecommitdiff
path: root/lib/look.pl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/look.pl')
-rw-r--r--lib/look.pl14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/look.pl b/lib/look.pl
index ebbaa73a3d..6eef43983b 100644
--- a/lib/look.pl
+++ b/lib/look.pl
@@ -11,13 +11,11 @@ sub look {
$blksize = 8192 unless $blksize;
$key =~ s/[^\w\s]//g if $dict;
$key =~ y/A-Z/a-z/ if $fold;
- $max = $size + $blksize - 1;
- $max -= $size % $blksize;
- while ($max - $min > $blksize) {
- $mid = ($max + $min) / 2;
- die "look: internal error" if $mid % $blksize;
- seek(FH,$mid,0);
- $_ = <FH>; # probably a partial line
+ $max = int($size / $blksize);
+ while ($max - $min > 1) {
+ $mid = int(($max + $min) / 2);
+ seek(FH,$mid * $blksize,0);
+ $_ = <FH> if $mid; # probably a partial line
$_ = <FH>;
chop;
s/[^\w\s]//g if $dict;
@@ -29,7 +27,9 @@ sub look {
$max = $mid;
}
}
+ $min *= $blksize;
seek(FH,$min,0);
+ <FH> if $min;
while (<FH>) {
chop;
s/[^\w\s]//g if $dict;