[net.news.b] fun with bitmaps, part 1: the e- command

mp@whuxle.UUCP (Mark Plotnick) (04/24/84)

Here's an interesting bug with "e-":
Suppose you read all the articles in a newsgroup, and then
enter a newsgroup with fewer articles than the previous
newsgroup. Then, if you do an "e-", then not only is the correct article
erased, but the article in the first newsgroup that has the same
number as the current article in the second newsgroup is also
cleared.  For instance, if my newsrc starts out as:

net.lang.c: 1-816
net.legal: 1-366

It will wind up as:

net.lang.c: 1-366,369-820
net.legal: 1-368

The problem lies in the fact that the first selectng() doesn't touch the
bitmap because of its clever "fast check for common case: 1-###".
So, the updaterc() that's called by the
second selectng() is scanning through a bitmap that really belongs
to the second newsgroup rather than the first newsgroup.

Fixes, anyone?  If disabling the "fast check" is too inefficient for
your tastes, and if adding a flag to selectng() to disable
the fast check offends your sensibilities, then I'm open to
suggestions, especially from the authors of the code.

	Mark