diff --git a/job.c b/job.c
index 943eef2c..ab696e36 100644
--- a/job.c
+++ b/job.c
@@ -183,7 +183,7 @@ job_run(const char *cmd, int argc, char **argv, struct environ *e,
 	environ_free(env);
 	free(argv0);
 
-	job = xmalloc(sizeof *job);
+	job = xcalloc(1, sizeof *job);
 	job->state = JOB_RUNNING;
 	job->flags = flags;
 
@@ -192,7 +192,8 @@ job_run(const char *cmd, int argc, char **argv, struct environ *e,
 	else
 		job->cmd = cmd_stringify_argv(argc, argv);
 	job->pid = pid;
-	strlcpy(job->tty, tty, sizeof job->tty);
+	if (flags & JOB_PTY)
+		strlcpy(job->tty, tty, sizeof job->tty);
 	job->status = 0;
 
 	LIST_INSERT_HEAD(&all_jobs, job, entry);