Mercurial > emacs
changeset 37279:c706f3e5efe0
(Fplist_get, Fplist_put): Add QUITs.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 09 Apr 2001 15:10:30 +0000 |
parents | 430eb00d1e9a |
children | d499538b011a |
files | src/fns.c |
diffstat | 1 files changed, 15 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fns.c Mon Apr 09 14:52:45 2001 +0000 +++ b/src/fns.c Mon Apr 09 15:10:30 2001 +0000 @@ -1852,8 +1852,8 @@ tail = tem; } } + - DEFUN ("plist-get", Fplist_get, Splist_get, 2, 2, 0, "Extract a value from a property list.\n\ PLIST is a property list, which is a list of the form\n\ @@ -1862,16 +1862,22 @@ one of the properties on the list.") (plist, prop) Lisp_Object plist; - register Lisp_Object prop; + Lisp_Object prop; { - register Lisp_Object tail; - for (tail = plist; !NILP (tail); tail = Fcdr (XCDR (tail))) + Lisp_Object tail; + + for (tail = plist; + CONSP (tail) && CONSP (XCDR (tail)); + tail = XCDR (XCDR (tail))) { - register Lisp_Object tem; - tem = Fcar (tail); - if (EQ (prop, tem)) - return Fcar (XCDR (tail)); + if (EQ (prop, XCAR (tail))) + return XCAR (XCDR (tail)); + QUIT; } + + if (!NILP (tail)) + wrong_type_argument (Qlistp, prop); + return Qnil; } @@ -1910,6 +1916,7 @@ return plist; } prev = tail; + QUIT; } newcell = Fcons (prop, Fcons (val, Qnil)); if (NILP (prev))