summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/subr-x.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-11-24 08:27:22 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-11-24 08:27:22 +0100
commit3a2eee6f7439866ac51d0d4c7b43f7f9f6f88fe2 (patch)
tree0c1729e06c359cd3822effdfbaaaa56ca46f5146 /lisp/emacs-lisp/subr-x.el
parentd63fc69b192a608f98c15d6014430f28138fd82e (diff)
downloademacs-3a2eee6f7439866ac51d0d4c7b43f7f9f6f88fe2.tar.gz
Fix string-glyph-split infloop
* lisp/emacs-lisp/subr-x.el (string-glyph-split): Fix infloop when applied to (string-glyph-split "✈️🌍") (bug#52067).
Diffstat (limited to 'lisp/emacs-lisp/subr-x.el')
-rw-r--r--lisp/emacs-lisp/subr-x.el7
1 files changed, 6 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index b2dae564c2b..95254b946e5 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -456,7 +456,12 @@ This takes into account combining characters and grapheme clusters."
(start 0)
comp)
(while (< start (length string))
- (if (setq comp (find-composition-internal start nil string nil))
+ (if (setq comp (find-composition-internal
+ start
+ ;; Don't search backward in the string for the
+ ;; start of the composition.
+ (min (length string) (1+ start))
+ string nil))
(progn
(push (substring string (car comp) (cadr comp)) result)
(setq start (cadr comp)))