Просмотр исходного кода

org-element: Fix infloop

* lisp/org-element.el (org-element-comment-parser): Fix infloop when
  a non-empty blank line follows a comment at the end of the buffer.
* testing/lisp/test-org-element.el: Add test.
Nicolas Goaziou 11 лет назад
Родитель
Сommit
84818415e8
2 измененных файлов с 10 добавлено и 6 удалено
  1. 1 2
      lisp/org-element.el
  2. 9 4
      testing/lisp/test-org-element.el

+ 1 - 2
lisp/org-element.el

@@ -1633,8 +1633,7 @@ Assume point is at comment beginning."
 	      (point)))
 	   (end (progn (goto-char com-end)
 		       (skip-chars-forward " \r\t\n" limit)
-		       (skip-chars-backward " \t")
-		       (if (bolp) (point) (line-end-position)))))
+		       (if (eobp) (point) (line-beginning-position)))))
       (list 'comment
 	    (nconc
 	     (list :begin begin

+ 9 - 4
testing/lisp/test-org-element.el

@@ -368,15 +368,20 @@ Some other text
   (should
    (eq 1
        (org-test-with-temp-text "#+keyword: value\n# comment\n#+keyword: value"
-	 (length (org-element-map
-		  (org-element-parse-buffer) 'comment 'identity)))))
+	 (length (org-element-map (org-element-parse-buffer) 'comment
+		   'identity)))))
   (should
    (equal "comment"
 	  (org-test-with-temp-text "#+keyword: value\n# comment\n#+keyword: value"
 	    (org-element-property
 	     :value
-	     (org-element-map
-	      (org-element-parse-buffer) 'comment 'identity nil t))))))
+	     (org-element-map (org-element-parse-buffer) 'comment
+	       'identity nil t)))))
+  ;; Correctly handle non-empty blank lines at the end of buffer.
+  (should
+   (org-test-with-temp-text "# A\n  "
+     (goto-char (org-element-property :end (org-element-at-point)))
+     (eobp))))
 
 
 ;;;; Comment Block