aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/subr.el9
-rw-r--r--test/automated/subr-tests.el9
2 files changed, 15 insertions, 3 deletions
diff --git a/lisp/subr.el b/lisp/subr.el
index 3ac61f9a45f..43660d74377 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -484,13 +484,16 @@ of course, also replace TO with a slightly larger value
484 (list from) 484 (list from)
485 (or inc (setq inc 1)) 485 (or inc (setq inc 1))
486 (when (zerop inc) (error "The increment can not be zero")) 486 (when (zerop inc) (error "The increment can not be zero"))
487 (let (seq (n 0) (next from)) 487 (let (seq (n 0) (next from) (last from))
488 (if (> inc 0) 488 (if (> inc 0)
489 (while (<= next to) 489 ;; The (>= next last) condition protects against integer
490 ;; overflow in computing NEXT.
491 (while (and (>= next last) (<= next to))
490 (setq seq (cons next seq) 492 (setq seq (cons next seq)
491 n (1+ n) 493 n (1+ n)
494 last next
492 next (+ from (* n inc)))) 495 next (+ from (* n inc))))
493 (while (>= next to) 496 (while (and (<= next last) (>= next to))
494 (setq seq (cons next seq) 497 (setq seq (cons next seq)
495 n (1+ n) 498 n (1+ n)
496 next (+ from (* n inc))))) 499 next (+ from (* n inc)))))
diff --git a/test/automated/subr-tests.el b/test/automated/subr-tests.el
index 7906a207a96..ce212903c9d 100644
--- a/test/automated/subr-tests.el
+++ b/test/automated/subr-tests.el
@@ -61,6 +61,15 @@
61 (quote 61 (quote
62 (0 font-lock-keyword-face)))))))) 62 (0 font-lock-keyword-face))))))))
63 63
64(ert-deftest number-sequence-test ()
65 (should (= (length
66 (number-sequence (1- most-positive-fixnum) most-positive-fixnum))
67 2))
68 (should (= (length
69 (number-sequence
70 (1+ most-negative-fixnum) most-negative-fixnum -1))
71 2)))
72
64(ert-deftest string-comparison-test () 73(ert-deftest string-comparison-test ()
65 (should (string-lessp "abc" "acb")) 74 (should (string-lessp "abc" "acb"))
66 (should (string-lessp "aBc" "abc")) 75 (should (string-lessp "aBc" "abc"))