changeset 919:111c4f2ed9c9

[xemacs-hg @ 2002-07-14 09:43:52 by adrian] [S] [PATCH] xemacs-21.5: Hrvoje's `functionp' fix -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2002-07-08 Stephen J. Turnbull <stephen@xemacs.org> * lisp.h: Declare Fcdr_safe to be callable from C. 2002-07-08 Hrvoje Niksic <hniksic@xemacs.org> * eval.c (Ffunctionp): Return nil for autoloaded macros and keymaps.
author adrian
date Sun, 14 Jul 2002 09:43:54 +0000
parents bc2d7b06db9f
children 47ca978d6c75
files src/ChangeLog src/eval.c src/lisp.h
diffstat 3 files changed, 22 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sat Jul 13 11:59:22 2002 +0000
+++ b/src/ChangeLog	Sun Jul 14 09:43:54 2002 +0000
@@ -1,3 +1,12 @@
+2002-07-08  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* lisp.h: Declare Fcdr_safe to be callable from C.
+
+2002-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
+
+	* eval.c (Ffunctionp): Return nil for autoloaded macros and
+	keymaps.
+
 2002-07-08  Daiki Ueno  <daiki@xemacs.org>
 
 	* glyphs-x.c (x_unmap_subwindow): Deal with the substantial windows.
--- a/src/eval.c	Sat Jul 13 11:59:22 2002 +0000
+++ b/src/eval.c	Sun Jul 14 09:43:54 2002 +0000
@@ -3829,13 +3829,18 @@
   if (SYMBOLP (object))
     object = indirect_function (object, 0);
 
-  return
-    (SUBRP (object) ||
-     COMPILED_FUNCTIONP (object) ||
-     (CONSP (object) &&
-      (EQ (XCAR (object), Qlambda) ||
-       EQ (XCAR (object), Qautoload))))
-    ? Qt : Qnil;
+  if (COMPILED_FUNCTIONP (object) || SUBRP (object))
+    return Qt;
+  if (CONSP (object))
+    {
+      Lisp_Object car = XCAR (object);
+      if (EQ (car, Qlambda))
+	return Qt;
+      if (EQ (car, Qautoload)
+	  && NILP (Fcar_safe (Fcdr_safe (Fcdr_safe (Fcdr_safe (XCDR (object)))))))
+	return Qt;
+    }
+  return Qnil;
 }
 
 static Lisp_Object
--- a/src/lisp.h	Sat Jul 13 11:59:22 2002 +0000
+++ b/src/lisp.h	Sun Jul 14 09:43:54 2002 +0000
@@ -3506,6 +3506,7 @@
 EXFUN (Fcar, 1);
 EXFUN (Fcar_safe, 1);
 EXFUN (Fcdr, 1);
+EXFUN (Fcdr_safe, 1);
 EXFUN (Fgeq, MANY);
 EXFUN (Fgtr, MANY);
 EXFUN (Findirect_function, 1);