From 53cf5936c19a6c7352483323666c3915de6f7746 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sun, 27 Sep 2020 00:17:58 +0200 Subject: [PATCH] Slight replace-in-string optimization * lisp/subr.el (replace-in-string): Optimize to return the original string if nothing was replaced (bug#43598). --- lisp/subr.el | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lisp/subr.el b/lisp/subr.el index dd797021f1c..357eae0f505 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -4442,10 +4442,13 @@ Unless optional argument INPLACE is non-nil, return a new string." (push (substring instring start pos) result)) (push tostring result) (setq start (+ pos (length fromstring)))) - ;; Get any remaining bit. - (unless (= start (length instring)) - (push (substring instring start) result)) - (apply #'concat (nreverse result)))) + (if (null result) + ;; No replacements were done, so just return the original string. + instring + ;; Get any remaining bit. + (unless (= start (length instring)) + (push (substring instring start) result)) + (apply #'concat (nreverse result))))) (defun replace-regexp-in-string (regexp rep string &optional fixedcase literal subexp start) -- 2.39.5