Hi,

The method org-agenda-show-clocking-issues has a faulty regex, which leads to false-positive
clocking issues: " Clocked: +(-\\|\\([0-9]+:[0-9]+\\))"

There is no outer group to limit the OR-expression \\|, so the right half will match timestamps with
a closing parenthesis without any "Clocked" in front of it.

I added a non-capturing group in the attached patch: " Clocked: +(\\(?:-\\|\\([0-9]+:[0-9]+\\)\\))".


Reproduction:

Define a custom agenda:
(setq org-agenda-custom-commands '(("d" "Clock report for today" agenda ""
                                    ((org-agenda-span 1)
(org-agenda-start-with-clockreport-mode t)
                                     (org-agenda-start-with-log-mode 'clockcheck)))))

Use an org file that is included in org-agenda-files, and add this sample headline: Sample headline with time and closing parenthesis in it (it happened at 12:00)

Clock in and out of the headline, make sure the clock timespan is at least 1 minute, and open the agenda defined above. Observe that the headline is reported as overlapping with itself, as the
faulty regex will match twice on its agenda line.

Best Regards,
Tim


From ac37efa543ab5823b5f2c62336d3e36b67fe516a Mon Sep 17 00:00:00 2001
From: mosquito-magnet <24659697+mosquito-mag...@users.noreply.github.com>
Date: Sat, 15 May 2021 15:43:28 +0200
Subject: [PATCH] org-agenda.el: Fix clocking issues regex

* org-agenda.el (org-agenda-show-clocking-issues): Fix regex to prevent 
false-positive clocking
issue detection.

Regex was missing a grouping to restrict the alternative \| to the
literal parentheses.

TINYCHANGE
---
 lisp/org-agenda.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 95848ab9b..bf917d321 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -6059,7 +6059,7 @@ (defun org-agenda-show-clocking-issues ()
                       '((:background "DarkRed") (:foreground "white"))))
         issue face m te ts dt ov)
     (goto-char (point-min))
-    (while (re-search-forward " Clocked: +(-\\|\\([0-9]+:[0-9]+\\))" nil t)
+    (while (re-search-forward " Clocked: +(\\(?:-\\|\\([0-9]+:[0-9]+\\)\\))" 
nil t)
       (setq issue nil face def-face)
       (catch 'next
        (setq m (org-get-at-bol 'org-marker)
-- 
2.29.0

Reply via email to