From d60336807e8b6b50ed1f6b6c56bc944676776119 Mon Sep 17 00:00:00 2001
From: dtc <dtc>
Date: Fri, 3 Dec 1999 16:24:57 +0000
Subject: [PATCH] Fix define-predicate for list based structures. The
 predicates were generating an error when passed a Nil argument due to an
 attempt to use ELT to access the name; the name is now accessed via NTH for
 list based structures.

---
 code/defstruct.lisp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/code/defstruct.lisp b/code/defstruct.lisp
index 4690f99b7..8e12e26b5 100644
--- a/code/defstruct.lisp
+++ b/code/defstruct.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defstruct.lisp,v 1.69 1999/09/23 16:14:42 dtc Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/defstruct.lisp,v 1.70 1999/12/03 16:24:57 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1111,11 +1111,13 @@
   (let ((name (dd-name defstruct))
 	(pred (dd-predicate defstruct)))
     (when (and pred (dd-named defstruct))
-      (let ((ltype (dd-lisp-type defstruct)))
+      (let ((ltype (dd-lisp-type defstruct))
+	    (index (cdr (car (last (find-name-indices defstruct))))))
 	`((defun ,pred (object)
 	    (and (typep object ',ltype)
-		 (eq (elt (the ,ltype object)
-			  ,(cdr (car (last (find-name-indices defstruct)))))
+		 (eq ,(if (eq ltype 'list)
+			  `(nth ,index object)
+			  `(elt object ,index))
 		     ',name))))))))
 
 
-- 
GitLab