[gnu.bash.bug] current job not reset when a job is killed

nickson@comp.vuw.ac.nz (Ray Nickson) (07/13/89)

ENVIRONMENT: bash 1.01 or 1.02 on an HP300 running MORE/BSD4.3
(although I believe it applies to any system).

SYMPTOM: try the following:
------------------------
bash$ unset auto_resume
bash$ cat
^Z
[1]+ Stopped       cat
bash$ cat
^Z
[2]+ Stopped       cat
bash$ jobs
[1]- Stopped       cat
[2]+ Stopped       cat
bash$ kill -KILL %2
[2]+ Killed        cat     [ aww, poor pussy :-) ]
bash$ jobs
[1]- Stopped       cat
bash$ fg
No such job
bash$
-----------------------

BUG: the shell's notion of previous and current job is not always reset when
the current or previous job dies.

FIX: save them.  I think the delete_job function is the right place to
do it; I haven't properly checked when cleanup_dead_jobs, but the
following patch to version 1.02's jobs.c appears to work in the above
environment.

-rgn
--
nickson@comp.vuw.ac.nz       ...!uunet!vuwcomp!nickson      + 64 4 721000x8142

--------------------cut here--------------------
*** jobs.c.orig	Thu Jul 13 11:28:39 1989
--- jobs.c	Thu Jul 13 11:31:32 1989
***************
*** 272,279 ****
  {
    register JOB *temp = jobs[index];
  
!   jobs[index] = (JOB *)NULL;
  
    free (temp->wd);
    discard_pipeline (temp->pipe);
    if (temp->deferred)
--- 272,282 ----
  {
    register JOB *temp = jobs[index];
  
!   if (index == current_job || index == previous_job)
!     reset_current ();
  
+   jobs[index] = (JOB *)NULL;
+   
    free (temp->wd);
    discard_pipeline (temp->pipe);
    if (temp->deferred)