[gnu.emacs.bug] emacs bug

edward@UCBARPA.BERKELEY.EDU (Edward Wang) (10/04/88)

Manifestation: Emacs (version 18.52.4) does not use insert
or delete character to update the display on terminals
with termcap entries "im" and "ei" but no "ic".  Adding
the blank "ic=" entry fixes the problem.

Fix: In term.c, the flag char_ins_del_ok is not computed correctly.
The lines

  char_ins_del_ok = ((TS_ins_char || TS_ins_multi_chars)
		     && (TS_del_char || TS_del_multi_chars));

should be

  char_ins_del_ok = ((TS_insert_mode || TS_ins_char || TS_ins_multi_chars)
		     && (TS_del_char || TS_del_multi_chars));

I don't think it is necessary to add TS_delete_mode, since "dc"
is required even with "dm" set (it doesn't make sense otherwise).
However, "ic" is not required when "im" is set.

This exists in all Emacs versions, but char_ins_del_ok is unused
until this version.

BOWMAN%PPC.MFENET@CCC.NMFECC.GOV (10/17/89)

                Emacs Bug Report
Emacs Version: 18.52.4 Compiled Tue Jun 27, 1989 on _RAX (VAX_VMS)
Machine: USC VAX 8600
Operating system: VMS V5.1-B.

Dear Sir:
        I would like to report a rather serious bug (involving an EMACS
crash) I have found and corrected in our VMS implementation of EMACS. To
illustrate the bug, do the following: Execute the function
subprocess-command (usually bound to ESC-$). Then force the subprocess to
send a steady stream of output (e.g. with a $DIRECTORY command or $TYPE a
file). While the subprocess is busy sending output, type a CTRL-G a few
times. The routine sys_abort() will be called from get_display_line(), and
one winds up in the debugger.  (No auto-saves are done nor is the user
prompted by the usual emergency escape queries). At this point it seems
that the windowing and/or screen parameters are messed up. The problem
appears to occur in the routine interrupt_signal() in keyboard.c. The
CTRL-G results in a throw, which is undesirable when the subprocess is
sending output. The problem can be circumvented by putting a call to
clear_waiting_for_input() at the beginning of the subprocess input handler
(in file vmsfns.c).

I hope this is enough information for you to understand and replicate the
bug. The fix I mentioned above has not been installed on the system version of
emacs but unless you have a better solution we will eventually install it.
If you need any more information please contact me.

                        Yours sincerely,

                                    John Bowman
                                    Plasma Physics Lab
                                    P.O. Box 451
                                    Princeton, NJ. 08543
                                    (609)243-2301

BOWMAN%PPC.MFENET@ccc.nmfecc.gov (10/20/89)

Re: Emacs Ctl-G bug.

Hi. As I mentioned in my last message, it seems that vmsfns.c was the
wrong place to put in the calls to clear_waiting_for_input and
set_waiting_for_input. Instead, the following routine seems to be the
correct place to make the change. It is taken from sysdep.c and calls
process_command_input, a routine from vmsfns.c. I have initialed my changes.
If I also (setq window-system t) in the input-handler then I get proper
behaviour of both normal Ctl-g and "emergency escape" signals.
The Vinhibit_quit=Qt below also is required for proper handling of emergency
escapes. There are no changes required in vmsfns.c afterall.
                -- John Bowman


wait_for_kbd_input ()
{
  extern int have_process_input, process_exited;

  /* If already something, avoid doing system calls.  */
  if (detect_input_pending ())
    {
      return;
    }
  /* Clear a flag, and tell ast routine above to set it.  */
  SYS$CLREF (input_ef);
  waiting_for_ast = 1;
  /* Check for timing error: ast happened while we were doing that.  */
  if (!detect_input_pending ())
    {
      /* No timing error: wait for flag to be set.  */
      SYS$WFLOR (input_ef, input_eflist);
      if (!detect_input_pending ())
        /* Check for subprocess input availability */
        {
          int dsp = have_process_input || process_exited;

          clear_waiting_for_input();/* Otherwise Ctl-G will cause crash. JCB */
          Vinhibit_quit=Qt;         /* JCB */

          if (have_process_input)
            process_command_input ();
          if (process_exited)
            process_exit ();
          if (dsp)
            {
              RedoModes++;
              DoDsp (1);
            }
          set_waiting_for_input(0); /* JCB */

        }
    }
  waiting_for_ast = 0;
}

larry@SHARKEY.CC.UMICH.EDU (Larry Siden) (12/07/89)

Hello,
	I am running EMACS version 18.52 and I keep encountering the following
bug whenever I attempt one of the functions 'minibuffer-complete-word' or
'minibuffer-completion' while building an argument to a command that takes
a file-name (e.g. 'find-file').  After typing a complete pathname prefix (e.g.
"/users/larry/", a TAB will produce the message "[Complete, but not unique]"
in the minibuffer, and a space will produce a directory listing in the window
*Completions* .  But if I type a space after "/users/larry" (sans final '/')
I will get a message that reads:

"Wrong type argumnent: sequencep, #<EMACS BUG: ILLEGAL DATATYPE (#o 57) Save your"

The message is cut off after the word "your".

Do you know what this is?
Do you have a more up-to-date version of the culprit module (.o file) to send
me that I can re-link with the others?

Here is the output of the *Backtrace* buffer:

Signalling: (wrong-type-argument sequencep #<EMACS BUG: ILLEGAL DATATYPE (#o 57) Save your buffers immediately and please report this bug>)
  read-file-name-internal("~/fsf" "~/" nil)
  minibuffer-complete-word()
  call-interactively(minibuffer-complete-word)
  call-interactively(find-file)

note: "fsf" is the name of a directory.