aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fns.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/fns.c b/src/fns.c
index 0fded92aeb2..6aad119d1f9 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -159,14 +159,14 @@ EMACS_INT length_internal (Lisp_Object sequence, int len)
159 if (len < 0xffff) 159 if (len < 0xffff)
160 while (CONSP (sequence)) 160 while (CONSP (sequence))
161 { 161 {
162 if (--len == 0) 162 if (--len <= 0)
163 return -1; 163 return -1;
164 sequence = XCDR (sequence); 164 sequence = XCDR (sequence);
165 } 165 }
166 /* Signal an error on circular lists. */ 166 /* Signal an error on circular lists. */
167 else 167 else
168 FOR_EACH_TAIL (sequence) 168 FOR_EACH_TAIL (sequence)
169 if (--len == 0) 169 if (--len <= 0)
170 return -1; 170 return -1;
171 return len; 171 return len;
172} 172}
@@ -210,6 +210,9 @@ counted. */)
210 CHECK_FIXNUM (length); 210 CHECK_FIXNUM (length);
211 EMACS_INT len = XFIXNUM (length); 211 EMACS_INT len = XFIXNUM (length);
212 212
213 if (len < 0)
214 return Qnil;
215
213 if (CONSP (sequence)) 216 if (CONSP (sequence))
214 return length_internal (sequence, len + 1) == 1? Qt: Qnil; 217 return length_internal (sequence, len + 1) == 1? Qt: Qnil;
215 else 218 else