(delete): Return nil when argument 'list' is nil. <cf. [tm-ja:4935]>
authoryamaoka <yamaoka>
Fri, 20 Aug 1999 10:06:47 +0000 (10:06 +0000)
committeryamaoka <yamaoka>
Fri, 20 Aug 1999 10:06:47 +0000 (10:06 +0000)
poe-18.el

index 88ae916..9b021bf 100644 (file)
--- a/poe-18.el
+++ b/poe-18.el
@@ -63,15 +63,16 @@ it is simply using a different list.
 Therefore, write `(setq foo (delete element foo))'
 to be sure of changing the value of `foo'.
 \[poe-18.el; EMACS 19 emulating function]"
-  (if (equal elt (car list))
-      (cdr list)
-    (let ((rest list)
-         (rrest (cdr list)))
-      (while (and rrest (not (equal elt (car rrest))))
-       (setq rest rrest
-             rrest (cdr rrest)))
-      (setcdr rest (cdr rrest))
-      list)))
+  (if list
+      (if (equal elt (car list))
+         (cdr list)
+       (let ((rest list)
+             (rrest (cdr list)))
+         (while (and rrest (not (equal elt (car rrest))))
+           (setq rest rrest
+                 rrest (cdr rrest)))
+         (setcdr rest (cdr rrest))
+         list))))
 
 (defun member (elt list)
   "Return non-nil if ELT is an element of LIST.  Comparison done with EQUAL.