If the CUPS filter or backend called by the filterExternalCUPS()
filter function stops on a signal (like for example signal 11,
segmentation fault) filterExternalCUPS() returns 1 now and not a value
> 256. Otherwise filterChain() will not see the failure (exit() only
passes on the last byte of its argument as exit code) and returns 0
for success, making a job with a crashed filter appear as succeeded.
(params->is_backend ? "Backend" : "Filter") :
"Logging"),
wpid, WEXITSTATUS(wstatus));
- status = WEXITSTATUS(wstatus);
} else {
/* Via signal */
if (log) log(ld, FILTER_LOGLEVEL_ERROR,
(params->is_backend ? "Backend" : "Filter") :
"Logging"),
wpid, WTERMSIG(wstatus));
- status = 256 * WTERMSIG(wstatus);
}
+ status = 1;
} else {
if (log) log(ld, FILTER_LOGLEVEL_INFO,
"filterExternalCUPS (%s): %s (PID %d) exited with no errors.",