T-gnus 6.15.18 revision 00.
[elisp/gnus.git-] / lisp / gnus-clfns.el
index 123b9b1..191db6d 100644 (file)
@@ -1,5 +1,6 @@
 ;;; gnus-clfns.el --- compiler macros for emulating cl functions
-;; Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+
+;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
 
 ;; Author: Kastsumi Yamaoka <yamaoka@jpl.org>
 ;; Keywords: cl, compile
                 (or n (setq n 1))
                 (and (< n m)
                      (progn
-                       (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil))
+                       (if (> n 0)
+                           (progn
+                             (setq x (copy-sequence x))
+                             (setcdr (nthcdr (- (1- m) n) x) nil)))
                        x)))))
        `(let* ((x ,x)
                (m (length x)))
           (and (< 1 m)
                (progn
+                 (setq x (copy-sequence x))
                  (setcdr (nthcdr (- m 2) x) nil)
                  x))))))
 
@@ -365,7 +370,8 @@ You can use the `digit-argument' 1, 2 or 3 instead of\
                      ((and (memq fn clfns)
                            (listp form))
                       (push fn fns)))
-               (setq forms (append form forms))))
+               (when (listp form)
+                 (setq forms (append form forms)))))
            (when fns
              (if buffer
                  (set-buffer buffer)
@@ -387,7 +393,8 @@ You can use the `digit-argument' 1, 2 or 3 instead of\
               (progn
                 (insert fill-prefix
                         (mapconcat (lambda (fn) (format "%s" fn))
-                                   (nreverse fns) " "))
+                                   (nreverse fns) " ")
+                        "\n")
                 (point)))
              (fill-region (point-min) (point-max))
              (goto-char (point-min))