summaryrefslogtreecommitdiff
path: root/lisp/info.el
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2014-06-25 14:36:51 +0400
committerDmitry Antipov <dmantipov@yandex.ru>2014-06-25 14:36:51 +0400
commit5697ca55cb79817a6704c344cc76d866ee2e1699 (patch)
tree3d9cace5c0dd430485eb16697cb6c045553eb3ae /lisp/info.el
parent9a214b9800b7c01d8a473a2564e8f57215990b24 (diff)
downloademacs-5697ca55cb79817a6704c344cc76d866ee2e1699.tar.gz
Do not allow out-of-range character position in Fcompare_strings.
* src/fns.c (validate_subarray): Add prototype. (Fcompare_substring): Use validate_subarray to check ranges. Adjust comment to mention that the semantics was changed. Also see http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00447.html. * lisp/files.el (dir-locals-find-file, file-relative-name): * lisp/info.el (Info-complete-menu-item): * lisp/minibuffer.el (completion-table-subvert): Prefer string-prefix-p to compare-strings to avoid out-of-range errors. * lisp/subr.el (string-prefix-p): Adjust to match strict range checking in compare-strings. * test/automated/fns-tests.el (fns-tests-compare-string): New test.
Diffstat (limited to 'lisp/info.el')
-rw-r--r--lisp/info.el4
1 files changed, 1 insertions, 3 deletions
diff --git a/lisp/info.el b/lisp/info.el
index 89ca8bdbe33..405d6a22449 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -2691,9 +2691,7 @@ Because of ambiguities, this should be concatenated with something like
(equal (nth 1 Info-complete-cache) Info-current-node)
(equal (nth 2 Info-complete-cache) Info-complete-next-re)
(equal (nth 5 Info-complete-cache) Info-complete-nodes)
- (let ((prev (nth 3 Info-complete-cache)))
- (eq t (compare-strings string 0 (length prev)
- prev 0 nil t))))
+ (string-prefix-p (nth 3 Info-complete-cache) string) t)
;; We can reuse the previous list.
(setq completions (nth 4 Info-complete-cache))
;; The cache can't be used.