[comp.sources.bugs] wanderer arrow display bug, unofficial patch

pokey@well.UUCP (Jef Poskanzer) (07/21/88)

Appended please find a fix to the problem of arrow display in wanderer.
It was an off-by-one error causing the arrows to sometimes not display or
display when they should / shouldn't have.  Finding it was a little
hard because the code is full of mystery integers and is formatted
like FORTRAN.
---
Jef

             Jef Poskanzer   jef@rtsg.ee.lbl.gov   ...well!pokey
Flon's Law: There is not now, and never will be, a language in which it is the
                  least bit difficult to write bad programs.

RCS file: RCS/fall.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** /tmp/,RCSt1a06074	Wed Jul 20 17:47:56 1988
--- /tmp/,RCSt2a06074	Wed Jul 20 17:47:58 1988
***************
*** 117,125 ****
  	screen[nyr][x] = ' ';
      	}
      screen[nyr][x] = '<';
!     if((y<(sy+4)) && (y>(sy-4)) && (x<(sx+6)) && (x>(sx-6)))
          draw_symbol((x-sx+6)*3,(y-sy+3)*2,' ');
!     if((nyr<(sy+4)) && (nyr>(sy-4)) && (x<(sx+7)) && (x>(sx-5)))
          draw_symbol((x-sx+5)*3,(nyr-sy+3)*2,'<');
      refresh();
      retval+=fall(mx,my,x-1,nyr,sx,sy,screen,howdead);
--- 117,125 ----
  	screen[nyr][x] = ' ';
      	}
      screen[nyr][x] = '<';
!     if((y<(sy+4)) && (y>(sy-4)) && (x<(sx+5)) && (x>(sx-7)))
          draw_symbol((x-sx+6)*3,(y-sy+3)*2,' ');
!     if((nyr<(sy+4)) && (nyr>(sy-4)) && (x<(sx+6)) && (x>(sx-6)))
          draw_symbol((x-sx+5)*3,(nyr-sy+3)*2,'<');
      refresh();
      retval+=fall(mx,my,x-1,nyr,sx,sy,screen,howdead);
***************
*** 157,165 ****
  	screen[nyl][x] = ' ';
      	}
      screen[nyl][x] = '>';
!     if((y<(sy+4)) && (y>(sy-4)) && (x<(sx+6)) && (x>(sx-6)))
          draw_symbol((x-sx+4)*3,(y-sy+3)*2,' ');
!     if((nyl<(sy+4)) && (nyl>(sy-4)) && (x<(sx+5)) && (x>(sx-7)))
          draw_symbol((x-sx+5)*3,(nyl-sy+3)*2,'>');
      refresh();
      retval+=fall(mx,my,x+1,nyl,sx,sy,screen,howdead);
--- 157,165 ----
  	screen[nyl][x] = ' ';
      	}
      screen[nyl][x] = '>';
!     if((y<(sy+4)) && (y>(sy-4)) && (x<(sx+7)) && (x>(sx-5)))
          draw_symbol((x-sx+4)*3,(y-sy+3)*2,' ');
!     if((nyl<(sy+4)) && (nyl>(sy-4)) && (x<(sx+6)) && (x>(sx-6)))
          draw_symbol((x-sx+5)*3,(nyl-sy+3)*2,'>');
      refresh();
      retval+=fall(mx,my,x+1,nyl,sx,sy,screen,howdead);