From 764ea377da8f352b999ba144751ac76c6ffe97db Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Sun, 14 Oct 2007 17:21:39 +0000 Subject: [PATCH] (Ffset): Save autoload of the function being set. --- src/data.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/data.c b/src/data.c index dfc0c35705a..c8c40aa6df0 100644 --- a/src/data.c +++ b/src/data.c @@ -663,12 +663,20 @@ DEFUN ("fset", Ffset, Sfset, 2, 2, 0, (symbol, definition) register Lisp_Object symbol, definition; { + register Lisp_Object function; + CHECK_SYMBOL (symbol); if (NILP (symbol) || EQ (symbol, Qt)) xsignal1 (Qsetting_constant, symbol); - if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (symbol)->function, Qunbound)) - Vautoload_queue = Fcons (Fcons (symbol, XSYMBOL (symbol)->function), - Vautoload_queue); + + function = XSYMBOL (symbol)->function; + + if (!NILP (Vautoload_queue) && !EQ (function, Qunbound)) + Vautoload_queue = Fcons (Fcons (symbol, function), Vautoload_queue); + + if (CONSP (function) && EQ (XCAR (function), Qautoload)) + Fput (symbol, Qautoload, XCDR (function)); + XSYMBOL (symbol)->function = definition; /* Handle automatic advice activation */ if (CONSP (XSYMBOL (symbol)->plist) && !NILP (Fget (symbol, Qad_advice_info))) @@ -752,7 +760,7 @@ Value, if non-nil, is a list \(interactive SPEC). */) Lisp_Object cmd; { Lisp_Object fun = indirect_function (cmd); /* Check cycles. */ - + if (NILP (fun) || EQ (fun, Qunbound)) return Qnil; -- 2.39.5