[mw-devel] CVS Update at silver.sucs.org: mw
Finn Wilcox
finnw at sucs.org
Sun Nov 16 21:57:25 GMT 2003
CVSROOT: /usr/local/src/cvs
Module name: mw
Changes by: finnw at silver.sucs.org 03/11/16 21:57:25
Modified files:
src : read.c
Log message:
Fixed a bug which made some messages inaccessible.
Consider: !cd Notices, !read 5
read_msg() was doing this:
posn = (msgnum - data->first)*sizeof(struct Header);
...
lseek(headfile, posn, 0);
Since data->first == 1, this seeks to record #4 which, since tidyup has
squeezed out messages 3 & 4, contains message 7. read_msg() then does:
while (get_data(headfile, head) && head->Ref < msgnum);
if (head.Ref==msgnum)
...
reads the entry for message 7 and gives up.
We now seek from the end of the file instead. If there are expunged
messages in between, we will seek to an earlier message, but the
get_data() loop will find the one we want.
Same problem also fixed in get_mesg_header()
More information about the mw-devel
mailing list