Subject: Re: bug#31193: 26.1; error in `term-down' after window configuration change

From: Noam Postavsky <[email-masked]>
Date: Tue, 17 Apr 2018 09:23:46 -0400

Phil Sainty <[email-masked]> writes:

> In a `term' buffer, seemingly after any window configuration change, the
> process filter triggers an error due to `term-current-row' being nil
> unexpectedly.
>
> Recipe:
>
> emacs -Q
> M-x toggle-debug-on-error
> M-x term
> RET
> RET #repeatedly -- all is fine at this point...
> C-c 2
> RET
>
> Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p 
> nil)
>   term-down(1 t)
>   term-emulate-terminal(#<process terminal> "\015\033[K$
> \015\n\032//home/phil\015\n")

Hmm, I'm not able to reproduce this, even though it makes sense to me
that my fix for Bug#30544 [1: a64c11a3aa] would cause this.  Perhaps it
depends on your shell prompt as well?

> That test of (= term-current-row 0) occurs twice in the function.
>
> Trivially, testing (bound-and-true-p term-current-row) beforehand in
> both pieces of code circumvents the error and appears in practice to
> resolve the issue, but I don't know whether that's the *right* fix.

I think changing them to function calls, i.e., (term-current-row)
instead of term-current-row would be the right thing; all the other term
functions use the function rather than accessing the variable directly.

[1: a64c11a3aa]: 2018-04-02 06:57:53 -0400
  Fix term.el rendering following a window resize (Bug#30544)
  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=a64c11a3aa49121ceab79a2acc99c829d42417bd>