]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid using if-let in subr.el
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 30 Apr 2022 14:24:55 +0000 (16:24 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 30 Apr 2022 14:24:55 +0000 (16:24 +0200)
* lisp/subr.el (string-lines): Avoid using if-let (from subr-x) in
subr (bug#55194).

lisp/subr.el

index 14cab04d429ab536e57bdc7641b7265ec920ef39..5fadac6e16c6c4302f7d2568c409e144a7326ba3 100644 (file)
@@ -6654,27 +6654,30 @@ lines."
   (let ((lines nil)
         (start 0))
     (while (< start (length string))
-      (if-let ((newline (string-search "\n" string start)))
-          (progn
-            (when (or (not omit-nulls)
-                      (not (= start newline)))
-              (let ((line (substring string start
-                                     (if keep-newlines
-                                         (1+ newline)
-                                       newline))))
-                (when (not (and keep-newlines omit-nulls
-                                (equal line "\n")))
-                  (push line lines))))
-            (setq start (1+ newline))
-            ;; Include the final newline.
-            (when (and (= start (length string))
-                       (not omit-nulls)
-                       (not keep-newlines))
-              (push "" lines)))
-        (if (zerop start)
-            (push string lines)
-          (push (substring string start) lines))
-        (setq start (length string))))
+      (let ((newline (string-search "\n" string start)))
+        (if newline
+            (progn
+              (when (or (not omit-nulls)
+                        (not (= start newline)))
+                (let ((line (substring string start
+                                       (if keep-newlines
+                                           (1+ newline)
+                                         newline))))
+                  (when (not (and keep-newlines omit-nulls
+                                  (equal line "\n")))
+                    (push line lines))))
+              (setq start (1+ newline))
+              ;; Include the final newline.
+              (when (and (= start (length string))
+                         (not omit-nulls)
+                         (not keep-newlines))
+                (push "" lines)))
+          ;; No newline in the remaining part.
+          (if (zerop start)
+              ;; Avoid a string copy if there are no newlines at all.
+              (push string lines)
+            (push (substring string start) lines))
+          (setq start (length string)))))
     (nreverse lines)))
 
 (defun buffer-match-p (condition buffer-or-name &optional arg)