From: Lars Ingebrigtsen Date: Sat, 26 Sep 2020 22:17:58 +0000 (+0200) Subject: Slight replace-in-string optimization X-Git-Tag: emacs-28.0.90~5863 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=53cf5936c19a6c7352483323666c3915de6f7746;p=emacs.git Slight replace-in-string optimization * lisp/subr.el (replace-in-string): Optimize to return the original string if nothing was replaced (bug#43598). --- 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)