[comp.sources.bugs] Bugfix for Chess game

billr@tekred.TEK.COM (Bill Randle) (05/23/87)

Here is a diff to fix the premature checkmate problem in the BSD
patched version of chess that was posted to comp.sources.games.
Only the first sizeof(short *) bytes were being cleared instead
of all 64*sizeof(short) bytes as is required.  I'm sure there are
some other lingering problems, but this should get you started.
(The other two patches are just some minor cleanups.)

	-Bill Randle
	Moderator, comp.sources.games
	Tektronix, Inc.
	games-request@tekred.TEK.COM
------------------------------------

*** chess.c.orig	Fri May 22 15:08:48 1987
--- chess.c	Fri May 22 15:07:59 1987
***************
*** 4,10 ****
      Written by John Stanback (hplabs!hpfcla!hpisla!hpltca!jhs)
  
      Patches for BSD Unix by Rich Salz (rs@mirror.TMC.COM) - 5/3/87
! 
  */ 
  
  #include <stdio.h>
--- 4,10 ----
      Written by John Stanback (hplabs!hpfcla!hpisla!hpltca!jhs)
  
      Patches for BSD Unix by Rich Salz (rs@mirror.TMC.COM) - 5/3/87
! 		  and Bill Randle (billr@tekred.TEK.COM) - 5/22/87
  */ 
  
  #include <stdio.h>
***************
*** 538,544 ****
          }
        minute = et/60; second = (et - 60*minute);
        if (player == computer) gotoXY(50,18); else gotoXY(50,23);
!       printw("%d:%d",minute,second); ClrEoln();
        if (et > 0) srate = NodeCnt/et; else srate = 0;
        if (post)
          {
--- 538,544 ----
          }
        minute = et/60; second = (et - 60*minute);
        if (player == computer) gotoXY(50,18); else gotoXY(50,23);
!       printw("%d:%02d",minute,second); ClrEoln();
        if (et > 0) srate = NodeCnt/et; else srate = 0;
        if (post)
          {
***************
*** 687,692 ****
--- 687,693 ----
    response_time = buff[0] ? atoi(buff) : DEF_TIME;
    ClrScreen(); PrintBoard(white,0,0,1);
    InitializeStats();
+   time0 = time(0);
    ElapsedTime(1);
    GetOpenings();
  }
***************
*** 853,859 ****
  short piece,i,m0,*aloc,*s;
   
  #ifdef	BSD
!   bzero((char *)a, sizeof a);
  #else
    a = (short *)memset(a,0,64*sizeof(short));
  #endif	/* BSD */
--- 854,860 ----
  short piece,i,m0,*aloc,*s;
   
  #ifdef	BSD
!   bzero((char *)a, 64*sizeof(short));
  #else
    a = (short *)memset(a,0,64*sizeof(short));
  #endif	/* BSD */
-- 

	-Bill Randle
	Tektronix, Inc.
	billr@tekred.TEK.COM