[cl-utilities-cvs] CVS update: cl-utilities/extremum.lisp

Peter Scott pscott at common-lisp.net
Mon May 16 22:06:47 UTC 2005


Update of /project/cl-utilities/cvsroot/cl-utilities
In directory common-lisp.net:/tmp/cvs-serv13214

Modified Files:
	extremum.lisp 
Log Message:
Probably fixed problem with START and END and error checking.

Date: Tue May 17 00:06:47 2005
Author: pscott

Index: cl-utilities/extremum.lisp
diff -u cl-utilities/extremum.lisp:1.3 cl-utilities/extremum.lisp:1.4
--- cl-utilities/extremum.lisp:1.3	Fri May 13 21:45:09 2005
+++ cl-utilities/extremum.lisp	Tue May 17 00:06:47 2005
@@ -41,7 +41,8 @@
 http://www.cliki.net/EXTREMUM for the full
 specification. Additionally, START and END specify the beginning and
 ending indices of the part of the sequence we should look at."
-  (if (zero-length-p sequence)
+  (if (or (zero-length-p sequence)
+	  (>= start (or end (length sequence))))
       (restart-case (error 'no-extremum)
 	(continue ()
 	  :report "Return NIL instead"
@@ -54,7 +55,8 @@
 					&key (key #'identity) (start 0) end)
   (if (eql key #'identity)
       (once-only (sequence predicate start end)
-	`(if (zero-length-p ,sequence)
+	`(if (or (zero-length-p ,sequence)
+	      (>= ,start (or ,end (length ,sequence))))
 	  (restart-case (error 'no-extremum)
 	    (continue ()
 	      :report "Return NIL instead"
@@ -89,7 +91,8 @@
 if the KEY function is so slow that calling it less often would be a
 significant improvement; ordinarily it's slower."
   (declare (optimize (speed 3) (safety 0) (space 0) (debug 1)))
-  (if (zero-length-p sequence)
+  (if (or (zero-length-p sequence)
+	  (>= start (or end (length sequence))))
       (restart-case (error 'no-extremum)
 	(continue ()
 	  :report "Return NIL instead"




More information about the Cl-utilities-cvs mailing list