Subject: 23.0.60; mouse-posn-property: Args out of range

From: Stephen Berman <[email-masked]>
Date: Sat, 29 Nov 2008 21:31:10 +0100

1. emacs -Q

2. Eval this:

   (defun testme ()
     (save-selected-window
       (switch-to-buffer "testme")))

If `testme' is not a fresh buffer, see observation (a) below.

3. Eval (run-at-time 3 nil 'testme) and wait 3 seconds.

4. When the `testme' buffer appears, move the mouse cursor over the mode line;
as soon as it hits a position that has a help-echo property containing the
string "mouse-2", the following error is raised:

   mouse-posn-property: Args out of range: 719

The out of range number is (point) in step 3.

Backtrace:

Debugger entered--Lisp error: (args-out-of-range 719)
  get-char-property(719 follow-link #<window 220 on testme>)
  mouse-posn-property((#<window 220 on testme> mode-line (467 . 644) 0 (#("-%-" 0 3 ...) . 2) 719 (58 . 46) nil (2 . 4) (8 . 16)) follow-link)
  (or (mouse-posn-property pos (quote follow-link)) (key-binding [follow-link] nil t pos))
  (and (or (not ...) mouse-1-click-in-non-selected-windows (eq ... ...)) (or (mouse-posn-property pos ...) (key-binding [follow-link] nil t pos)))
  (let ((action ...)) (cond (... ...) (... ...) (t action)))
  mouse-on-link-p((#<window 220 on testme> mode-line (467 . 644) 0 (#("-%-" 0 3 ...) . 2) 719 (58 . 46) nil (2 . 4) (8 . 16)))
  mouse-fixup-help-message("mouse-1: Select (drag to resize)\nmouse-2: Make current window occupy the whole frame\nmouse-3: Remove current window from display")

Observations:

a. The error only occurs when (point) of the the buffer that is current when
   step 3 is carried out, is greater than (point-max) of the buffer `testme'.
b. The error only occurs when testme is called from a timer.
c. The error only occurs when the function called from the timer
   contains a call to save-selected-window.
d. The error only occurs with propertized text satisfying mouse-on-link-p in
   either the mode line or the header line, i.e., suitably propertized
   text inserted into the editing area of the buffer does not induce the
   error.

In GNU Emacs 23.0.60.17 (i686-pc-linux-gnu, GTK+ Version 2.12.9)
 of 2008-11-29 on escher
Windowing system distributor `The X.Org Foundation', version 11.0.10400090
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t