diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2020-09-27 00:17:58 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2020-09-27 00:17:58 +0200 |
commit | 53cf5936c19a6c7352483323666c3915de6f7746 (patch) | |
tree | 500440a573fe14077c0c891b3736eed7a2f81bb1 /lisp/subr.el | |
parent | f43d9d94aafcdfbcc5a10498333a28b3f8220fcf (diff) | |
download | emacs-53cf5936c19a6c7352483323666c3915de6f7746.tar.gz emacs-53cf5936c19a6c7352483323666c3915de6f7746.tar.bz2 emacs-53cf5936c19a6c7352483323666c3915de6f7746.zip |
Slight replace-in-string optimization
* lisp/subr.el (replace-in-string): Optimize to return the
original string if nothing was replaced (bug#43598).
Diffstat (limited to 'lisp/subr.el')
-rw-r--r-- | lisp/subr.el | 11 |
1 files 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) |