Subject: bug#9371: 24.0.50; wrong-type-arg integer-or-marker-p nil in `end-of-visible-line'

From: "Drew Adams" <[email-masked]>
Date: Thu, 25 Aug 2011 08:46:08 -0700

I do not have a recipe from emacs -Q, but this backtrace should help:
 
Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p nil)
  goto-char(nil)
  (if (get-text-property (point) (quote invisible)) (goto-char
(next-single-property-change (point) (quote invisible))) (goto-char
(next-overlay-change (point))))
  (while (and (not (eobp)) (save-excursion (skip-chars-forward "^\n") (let
((prop (get-char-property (point) (quote invisible)))) (if (eq
buffer-invisibility-spec t) prop (or (memq prop buffer-invisibility-spec) (assq
prop buffer-invisibility-spec)))))) (skip-chars-forward "^\n") (if
(get-text-property (point) (quote invisible)) (goto-char
(next-single-property-change (point) (quote invisible))) (goto-char
(next-overlay-change (point)))) (end-of-line))
  end-of-visible-line()
  (save-excursion (end-of-visible-line) (point))
  (let ((end (save-excursion (end-of-visible-line) (point)))) (if (or
(save-excursion (unless show-trailing-whitespace (skip-chars-forward "  " end))
(= (point) end)) (and kill-whole-line (bolp))) (forward-visible-line 1)
(goto-char end)))
  (if arg (forward-visible-line (prefix-numeric-value arg)) (if (eobp) (signal
(quote end-of-buffer) nil)) (let ((end (save-excursion (end-of-visible-line)
(point)))) (if (or (save-excursion (unless show-trailing-whitespace
(skip-chars-forward "  " end)) (= (point) end)) (and kill-whole-line (bolp)))
(forward-visible-line 1) (goto-char end))))
  (progn (if arg (forward-visible-line (prefix-numeric-value arg)) (if (eobp)
(signal (quote end-of-buffer) nil)) (let ((end (save-excursion
(end-of-visible-line) (point)))) (if (or (save-excursion (unless
show-trailing-whitespace (skip-chars-forward "  " end)) (= (point) end)) (and
kill-whole-line (bolp))) (forward-visible-line 1) (goto-char end)))) (point))
  (kill-region (point) (progn (if arg (forward-visible-line
(prefix-numeric-value arg)) (if (eobp) (signal (quote end-of-buffer) nil)) (let
((end (save-excursion (end-of-visible-line) (point)))) (if (or (save-excursion
(unless show-trailing-whitespace ...) (= ... end)) (and kill-whole-line (bolp)))
(forward-visible-line 1) (goto-char end)))) (point)))
  kill-line(nil)
  apply(kill-line nil)
  ...
 
The problematic code seems to be this part of `end-of-visible-line',
near the end:
 
(if (get-text-property (point) 'invisible)
    (goto-char (next-single-property-change (point) 'invisible))
  (goto-char (next-overlay-change (point))))
 
In the case at hand, `point' has an `invisible' property, but
`next-single-property-change' returns nil, which makes `goto-char' barf.

In GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600)
 of 2011-08-22 on 3249CTO
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (4.5) --no-opt'