summaryrefslogtreecommitdiff
path: root/lisp/subr.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2020-09-27 00:17:58 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2020-09-27 00:17:58 +0200
commit53cf5936c19a6c7352483323666c3915de6f7746 (patch)
tree500440a573fe14077c0c891b3736eed7a2f81bb1 /lisp/subr.el
parentf43d9d94aafcdfbcc5a10498333a28b3f8220fcf (diff)
downloademacs-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.el11
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)