diff --git a/src/fns.c b/src/fns.c index c3202495da..267bd2c40f 100644 --- a/src/fns.c +++ b/src/fns.c @@ -1557,9 +1557,18 @@ The value is actually the tail of LIST whose car is ELT. */) (Lisp_Object elt, Lisp_Object list) { Lisp_Object tail = list; + for (int i = 0; i < SMALL_LIST_LEN_MAX; ++i, tail = XCDR (tail)) + { + if (!CONSP (tail)) + goto end; + else if (EQ (XCAR (tail), elt)) + return tail; + } + FOR_EACH_TAIL (tail) if (EQ (XCAR (tail), elt)) return tail; + end: CHECK_LIST_END (tail, list); return Qnil; }