diff --git a/src/fns.c b/src/fns.c index c3202495da..b7f25d4cba 100644 --- a/src/fns.c +++ b/src/fns.c @@ -97,6 +97,11 @@ ptrdiff_t list_length (Lisp_Object list) { intptr_t i = 0; + for ( ; i < SMALL_LIST_LEN_MAX && CONSP (list); ++i, list = XCDR (list)) + ; + if (i < SMALL_LIST_LEN_MAX) + return i; + FOR_EACH_TAIL (list) i++; CHECK_LIST_END (list, list);