[net.sources.bugs] rn bug #26

lwall@sdcrdcf.UUCP (Larry Wall) (12/01/84)

System: rn version 4.1
Bug #: 26
Priority: MEDIUM (HIGH for pyramids)
Subject: bitmap to rcline conversion may fail

Description:
	If you have more than a buffer's worth of unread article numbers upon
	exiting from a newsgroup, restore_ng() will misfire.  If you are
	on a Pyramid, for some reason, it blows up all the time.

Repeat-By:
	Better not to repeat it.

Fix:	From rn, say "| patch -d DIR", where DIR is your rn source directory.
	Outside of rn, say "cd DIR; patch <thisarticle".  If you don't have
	the patch program, apply the following by hand, or get patch.

Index: bits.c
Prereq: 4.1.1.2
***************
*** 1,4
! /* $Header: bits.c,v 4.1.1.2 84/10/31 11:58:50 lwall Exp $
   *
   * $Log:	bits.c,v $
   * Revision 4.1.1.2  84/10/31  11:58:50  lwall

--- 1,4 -----
! /* $Header: bits.c,v 4.1.1.3 84/11/30 17:08:15 lwall Exp $
   *
   * $Log:	bits.c,v $
   * Revision 4.1.1.3  84/11/30  17:08:15  lwall
***************
*** 1,6
  /* $Header: bits.c,v 4.1.1.2 84/10/31 11:58:50 lwall Exp $
   *
   * $Log:	bits.c,v $
   * Revision 4.1.1.2  84/10/31  11:58:50  lwall
   * initctl() wrongly assumed that expired articles were unread when trying
   * to adjust firstart, and misadjusted toread[ng].  toread[ng] is now

--- 1,9 -----
  /* $Header: bits.c,v 4.1.1.3 84/11/30 17:08:15 lwall Exp $
   *
   * $Log:	bits.c,v $
+  * Revision 4.1.1.3  84/11/30  17:08:15  lwall
+  * Had an = where it should have been ==.
+  * 
   * Revision 4.1.1.2  84/10/31  11:58:50  lwall
   * initctl() wrongly assumed that expired articles were unread when trying
   * to adjust firstart, and misadjusted toread[ng].  toread[ng] is now
***************
*** 154,160
      }
  #endif
      free(rcline[ng]);			/* return old rc line */
!     if (mybuf = buf) {
  	rcline[ng] = safemalloc((MEM_SIZE)(s-buf)+1);
  					/* grab a new rc line */
  	strcpy(rcline[ng], buf);	/* and load it */

--- 157,163 -----
      }
  #endif
      free(rcline[ng]);			/* return old rc line */
!     if (mybuf == buf) {
  	rcline[ng] = safemalloc((MEM_SIZE)(s-buf)+1);
  					/* grab a new rc line */
  	strcpy(rcline[ng], buf);	/* and load it */