diff -up cups-1.4.2/CHANGES-1.4.txt.str3407 cups-1.4.2/CHANGES-1.4.txt diff -up cups-1.4.2/scheduler/job.c.str3407 cups-1.4.2/scheduler/job.c --- cups-1.4.2/scheduler/job.c.str3407 2009-11-17 12:18:38.518084476 +0000 +++ cups-1.4.2/scheduler/job.c 2009-11-17 13:00:46.204083691 +0000 @@ -1721,7 +1721,30 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J cupsdLogMessage(CUPSD_LOG_ERROR, "[Job %d] Ran out of memory for job file types!", job->id); - return (1); + + ippDelete(job->attrs); + job->attrs = NULL; + + if (compressions) + free(compressions); + + if (filetypes) + free(filetypes); + + if (job->compressions) + { + free(job->compressions); + job->compressions = NULL; + } + + if (job->filetypes) + { + free(job->filetypes); + job->filetypes = NULL; + } + + job->num_files = 0; + return (0); } job->compressions = compressions; @@ -1789,6 +1812,21 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J ippDelete(job->attrs); job->attrs = NULL; + + if (job->compressions) + { + free(job->compressions); + job->compressions = NULL; + } + + if (job->filetypes) + { + free(job->filetypes); + job->filetypes = NULL; + } + + job->num_files = 0; + unlink(jobfile); return (0); @@ -4411,7 +4449,7 @@ update_job_attrs(cupsd_job_t *job, /* I else if (job->printer->state_message[0] && do_message) cupsdSetString(&(job->printer_message->values[0].string.text), job->printer->state_message); - + /* * ... and the printer-state-reasons value... */