You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Brian Behlendorf <br...@hyperreal.com> on 1996/06/06 12:58:59 UTC

fix for instoppable loop in mod_imap.c (code)

oops, here it is.

*** mod_imap.c~	Thu Jun  6 03:19:47 1996
--- mod_imap.c	Thu Jun  6 03:20:09 1996
***************
*** 441,446 ****
--- 441,447 ----
  	      if ((string_pos = strrchr(directory, '/')))
  		  *string_pos = '\0';
  	      clen = strlen (directory);
+ 	      if (clen == 0) break;
  	  }
  
  	  value += 2;      /* jump over the '..' that we found in the value */




While we're at it, I also fixed pointinrect() such that the points can be
any two points in the rectangle in any order, not just upper-left to
lower-right.  I'm sure there's a neater way to do this, all you C purists
get yer emacs sessions ready!  Let's have a contest to see who can code
this in the least number of bytes possible....  (and yes, I consider this
a bugfix, since nothing in the docs say the points have to be upper-left
and lower-right)


*** mod_imap.c~	Thu Jun  6 03:20:09 1996
--- mod_imap.c	Thu Jun  6 03:53:48 1996
***************
*** 158,165 ****
  
  int pointinrect(double point[2], double coords[MAXVERTS][2])
  {
!     return ((point[X] >= coords[0][X] && point[X] <= coords[1][X]) &&
! 	    (point[Y] >= coords[0][Y] && point[Y] <= coords[1][Y]));
  }
  
  int pointincircle(double point[2], double coords[MAXVERTS][2])
--- 158,182 ----
  
  int pointinrect(double point[2], double coords[MAXVERTS][2])
  {
!     double max[2], min[2];
!     if (coords[0][X] > coords[1][X]) {
!         max[0] = coords[0][X];
!         min[0] = coords[1][X];
!     } else {
!         max[0] = coords[1][X];
!         min[0] = coords[0][X];
!     }
! 
!     if (coords[0][Y] > coords[1][Y]) {
!         max[1] = coords[0][Y];
!         min[1] = coords[1][Y];
!     } else {
!         max[1] = coords[1][Y];
!         min[1] = coords[0][Y];
!     }
! 
!     return ((point[X] >= min[0] && point[X] <= max[0]) &&
! 	    (point[Y] >= min[1] && point[Y] <= max[1]));
  }
  
  int pointincircle(double point[2], double coords[MAXVERTS][2])



As always, let me know what you think.