Subject: bug#33690: 26.1; Wrong type argument: number-or-marker-p, nil in window-edges

From: Eli Zaretskii <[email-masked]>
Date: Mon, 10 Dec 2018 09:01:13 +0200

> From: "Pascal J. Bourguignon" <[email-masked]>
> Date: Sun, 09 Dec 2018 22:34:12 +0100
> 
> 
> Launching emacs in a terminal (DISPLAY=:0.0, but no X server running),
> including my .emacs, I get 
> Wrong type argument: number-or-marker-p, nil in window-edges
> errors on C-n and C-p.
> The error come from window-edges.
> 
> Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
>   window-edges(nil t nil t)
>   window-inside-pixel-edges()
>   window-screen-lines()
>   line-move-partial(1 nil)
>   line-move(1 nil nil 1)
>   next-line(1 1)
>   funcall-interactively(next-line 1 1)
>   call-interactively(next-line nil nil)
>   command-execute(next-line)
> 
> Running with a window-edges not compiled, we find that the problem is
> that border-width is nil. I would therefore suggest to patch
> window-edges, to use 0 when frame-internal-border-width returns nil
> (which occurs when running in a terminal):

I don't understand.  The definition of frame-internal-border-width is
this:

  DEFUN ("frame-internal-border-width", Fframe_internal_border_width, Sframe_internal_border_width, 0, 1, 0,
	 doc: /* Return width of FRAME's internal border in pixels.  */)
    (Lisp_Object frame)
  {
    return make_number (FRAME_INTERNAL_BORDER_WIDTH (decode_any_frame (frame)));
  }

This can only return numbers, never nil, even when we are on a text
terminal.  Are you sure you don't override this definition with some
local code?

Thanks.