Subject: bug#79138: 31.0.50; (report-emacs-bug-check-org) throws an error when reporting unrelated bug

From: Dima Kogan <[email-masked]>
Date: Thu, 31 Jul 2025 14:32:56 -0700

Hi. I'm using the bleeding-edge emacs from git: 99080d0c049. On Debian.
GTK.

I just tried to M-x reportbug for something, and it repeatedly failed
because (report-emacs-bug-check-org) throws an "Args out of range"
error. The function in question:

  (defun report-emacs-bug-check-org ()
    "Warn the user if the bug report mentions org-mode."
    (unless report-emacs-bug-no-confirmation
      (goto-char (point-max))
      (skip-chars-backward " \t\n")
      (let* ((text (buffer-substring-no-properties (point-min) (point)))
             (l (length report-emacs-bug-orig-text))
             (text (substring text 0 l))
             (org-regex "\\b[Oo]rg\\(-mode\\)?\\b"))
        (when (string-match-p org-regex text)
          (when (yes-or-no-p "Is this bug about org-mode?")
            (error (substitute-command-keys "\
  Not sending, use \\[org-submit-bug-report] to report an Org-mode bug.")))))))

So it gets the current buffer text into 'text

  (goto-char (point-max))
  (text (buffer-substring-no-properties (point-min) (point)))

And then it cuts this variable to the size of the text in
'report-emacs-bug-orig-text.

  (l (length report-emacs-bug-orig-text))
  (text (substring text 0 l))

In this case report-emacs-bug-orig-text is much bigger than text, so the
(substring) fails. So currently (report-emacs-bug-check-org) is not
self-contained: it's making assumptions on the value of some external
variable ('report-emacs-bug-orig-text) when called, and if those
assumptions fail (as they do here), it dies.

Thanks