diff --git a/expand.c b/expand.c index 6dd512b5a..0ae783a51 100644 --- a/expand.c +++ b/expand.c @@ -421,16 +421,18 @@ static int find_process( const wchar_t *proc, { int jid = wcstol( proc, 0, 10 ); - - j = job_get( jid ); - if( (j != 0) && (j->command != 0 ) ) + if( jid > 0 ) { - + j = job_get( jid ); + if( (j != 0) && (j->command != 0 ) ) { - result = malloc(sizeof(wchar_t)*16 ); - swprintf( result, 16, L"%d", j->pgid ); - al_push( out, result ); - found = 1; + + { + result = malloc(sizeof(wchar_t)*16 ); + swprintf( result, 16, L"%d", j->pgid ); + al_push( out, result ); + found = 1; + } } } } diff --git a/proc.c b/proc.c index 79e89950a..b3519e2df 100644 --- a/proc.c +++ b/proc.c @@ -182,7 +182,7 @@ int proc_get_last_status() job_t *job_create() { - int free_id=0; + int free_id=1; job_t *res; while( job_get( free_id ) != 0 ) @@ -204,7 +204,7 @@ job_t *job_create() job_t *job_get( int id ) { job_t *res = first_job; - if( id == -1 ) + if( id <= 0 ) { return res; } diff --git a/proc.h b/proc.h index 274966602..94d027e0f 100644 --- a/proc.h +++ b/proc.h @@ -261,7 +261,7 @@ job_t *job_create(); /** Return the job with the specified job id. - If id is -1, return the last job used. + If id is 0 or less, return the last job used. */ job_t *job_get(int id);