Hi, The variable "org-map-continue-from" is not reset to nil after the funcall to action in function "org-scan-tags". Heres the patch which works diff --git a/lisp/org.el b/lisp/org.el index 8a1fbd3..54ab5fb 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -12848,7 +12848,8 @@ only lines with a TODO keyword are included in the output." (setq org-map-continue-from nil) (save-excursion (setq rtn1 (funcall action)) - (push rtn1 rtn))) + (push rtn1 rtn)) + (setq org-map-continue-from nil)) (t (error "Invalid action"))) ;; if we are to skip sublevels, jump to end of subtree To see the error in action assume that we want to archive all the "DONE" states in the file /tmp/test.org which contains the following lines. * s1 ** DONE ss1 ** NEXT ss2 (defun my-org-archive-subtree () (setq org-map-continue-from (point-at-bol)) (org-archive-subtree)) (org-map-entries 'my-org-archive-subtree "/DONE" (list "/tmp/test.org")) While the org-scan-tags funciton parses the first subheading(**DONE ss1) the match is successful and the function "my-org-archive-subtree" is called which sets the variable "org-map-continue-from" value to *beginning of line* and this variable is not set back to nil after the function call ends, which leads to infinite loop while parsing the subsequent headlines which does not match the "DONE" state(**NEXT ss2). Regards, Balamayam