Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site sdcrdcf.UUCP Path: utzoo!watmath!clyde!bonnie!akgua!sdcsvax!sdcrdcf!jonab From: jonab@sdcrdcf.UUCP (Jonathan Biggar) Newsgroups: net.sources.bugs Subject: Rn bug patch #2 (REPOSTED) Message-ID: <1466@sdcrdcf.UUCP> Date: Fri, 16-Nov-84 18:23:15 EST Article-I.D.: sdcrdcf.1466 Posted: Fri Nov 16 18:23:15 1984 Date-Received: Sun, 18-Nov-84 05:10:53 EST Reply-To: jonab@sdcrdcf.UUCP (Jonathan Biggar) Organization: System Development Corp. R+D, Santa Monica Lines: 194 System: rn version 4.1 Bug #: 2 Priority: MEDIUM Subject: rn may get confused about minimum article numbers Index: rcstuff.c Prereq: 4.1 Description: The relocate_newsgroup() routine did not correctly adjust the abs1st array, which stores minimum article numbers. This can manifest itself in several ways, such as spurious "Corrupt Xref" messages, and newsgroups that seem to be missing their articles. The problem does not show up unless you have CACHEFIRST defined, and newsgroups are added or moved to or from the beginning of the .newsrc. Repeat-By: Move or add some newsgroups to the front of your .newsrc, and then read news for a while. Sooner or later, it'll get you. Fix: From rn, say "| patch -d DIR", where DIR is your rn source directory. Outside of rn, say "cd DIR; patch ngx) current_ng--; --- 443,451 ----- #ifdef DEBUGGING ngmax[nextrcline-1] = tmpngmax; #endif + #ifdef CACHEFIRST + abs1st[nextrcline-1] = tmpabs1st; + #endif } if (current_ng > ngx) current_ng--; *************** *** 545,550 #ifdef DEBUGGING tmpngmax = ngmax[nextrcline-1]; #endif for (i=nextrcline-2; i>=newng; i--) { rcline[i+1] = rcline[i]; toread[i+1] = toread[i]; --- 564,572 ----- #ifdef DEBUGGING tmpngmax = ngmax[nextrcline-1]; #endif + #ifdef CACHEFIRST + tmpabs1st = abs1st[nextrcline-1]; + #endif for (i=nextrcline-2; i>=newng; i--) { rcline[i+1] = rcline[i]; toread[i+1] = toread[i]; *************** *** 554,559 #ifdef DEBUGGING ngmax[i+1] = ngmax[i]; #endif } rcline[newng] = tmprcline; toread[newng] = tmptoread; --- 576,584 ----- #ifdef DEBUGGING ngmax[i+1] = ngmax[i]; #endif + #ifdef CACHEFIRST + abs1st[i+1] = abs1st[i]; + #endif } rcline[newng] = tmprcline; toread[newng] = tmptoread; *************** *** 562,567 softptr[newng] = tmpsoftptr; #ifdef DEBUGGING ngmax[newng] = tmpngmax; #endif } if (current_ng >= newng) --- 587,595 ----- softptr[newng] = tmpsoftptr; #ifdef DEBUGGING ngmax[newng] = tmpngmax; + #endif + #ifdef CACHEFIRST + abs1st[newng] = tmpabs1st; #endif } if (current_ng >= newng)