]> git.eshelyaron.com Git - emacs.git/commitdiff
Slight replace-in-string optimization
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 26 Sep 2020 22:17:58 +0000 (00:17 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 26 Sep 2020 22:17:58 +0000 (00:17 +0200)
* lisp/subr.el (replace-in-string): Optimize to return the
original string if nothing was replaced (bug#43598).

lisp/subr.el

index dd797021f1c094d2bdace7d22206323642cdb4c3..357eae0f5059dabc6616da12d353b8e4bbbae962 100644 (file)
@@ -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)