On Wed, 4 Sep 2019 15:55:03 +0200 Corinna Vinschen wrote: > The code in fixup_after_attach() is the only code snippet setting > need_clear_screen = true. And that code also requires term != "dump" && > term == "*emacs*" to set need_clear_screen.
term != "*emacs*" > The code in reset_switch_to_pcon() requires that the need_clear_screen > flag is true regardless of checking TERM. So this code depends on the > successful TERM check from fixup_after_attach anyway. > > What am I missing? Two checking results may not be the same. Indeed, emacs changes TERM between two checks. fixup_after_attach() is called from fixup_after_exec(), which is called before executing the program code. reset_switch_to_pcon () is mainly called from PTY slave I/O functions. This is usually from the program code. The behaviour of the patch is as follows. First check : True True False False Second check: True False True False Clear screen: Yes No No No # True: neither dumb nor emacs* # False: either dumb or emacs* > + if (get_ttyp ()->num_pcon_attached_slaves == 0 && > + term && strcmp (term, "dumb") && > + term && !strstr (term, "emacs") && > + !ALWAYS_USE_PCON) > > You're checking term for != NULL twice. Oh my! -- Takashi Yano <takashi.y...@nifty.ne.jp>