=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/job.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- src/usr.bin/tmux/job.c 2009/11/04 21:04:43 1.11 +++ src/usr.bin/tmux/job.c 2009/11/04 21:10:49 1.12 @@ -1,4 +1,4 @@ -/* $OpenBSD: job.c,v 1.11 2009/11/04 21:04:43 nicm Exp $ */ +/* $OpenBSD: job.c,v 1.12 2009/11/04 21:10:49 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -127,7 +127,6 @@ if (job->fd != -1) close(job->fd); - if (job->event != NULL) bufferevent_free(job->event); @@ -202,8 +201,12 @@ close(job->fd); job->fd = -1; - if (job->pid == -1 && job->callbackfn != NULL) - job->callbackfn(job); + if (job->pid == -1) { + if (job->callbackfn != NULL) + job->callbackfn(job); + if ((!job->flags & JOB_PERSIST)) + job_free(job); + } } /* Job died (waitpid() returned its pid). */ @@ -213,8 +216,12 @@ job->status = status; job->pid = -1; - if (job->fd == -1 && job->callbackfn != NULL) - job->callbackfn(job); + if (job->fd == -1) { + if (job->callbackfn != NULL) + job->callbackfn(job); + if ((!job->flags & JOB_PERSIST)) + job_free(job); + } } /* Kill a job. */