forked from mirrors/nixpkgs
60311e0957
Beginning with version 3.18.7, `hpcups` fails with > DEBUG: imageProcessorStartPage failed and segfaults (tested with HP LaserJet 1000 printer). Upstream bug reports: * https://bugs.launchpad.net/hplip/+bug/1788706 * https://bugs.launchpad.net/hplip/+bug/1787289 There is a patch available in one of the reports: https://bugs.launchpad.net/hplip/+bug/1787289/+attachment/5176026/+files/hplip.patch It applies to 3.18.7, but not to later versions. This commit adds a slight adaption of the patch that applies to versions 3.18.9 -- 3.19.6. The patch fixes https://github.com/NixOS/nixpkgs/issues/58949 . Note that the patch is merely a workaround: It simply removes all calls into the ImageProcessor library from `HPCupsFilter.cpp`.
63 lines
2.1 KiB
Diff
63 lines
2.1 KiB
Diff
diff --git i/prnt/hpcups/HPCupsFilter.cpp w/prnt/hpcups/HPCupsFilter.cpp
|
|
index 5b282d8..153ee3a 100644
|
|
--- i/prnt/hpcups/HPCupsFilter.cpp
|
|
+++ w/prnt/hpcups/HPCupsFilter.cpp
|
|
@@ -31,7 +31,6 @@
|
|
\*****************************************************************************/
|
|
|
|
#include "HPCupsFilter.h"
|
|
-#include "ImageProcessor.h"
|
|
|
|
#include <signal.h>
|
|
#include <sys/wait.h>
|
|
@@ -637,16 +636,10 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
|
|
|
|
|
sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name);
|
|
- image_processor_t* imageProcessor = imageProcessorCreate();
|
|
|
|
while (cupsRasterReadHeader2(cups_raster, &cups_header))
|
|
{
|
|
|
|
- IMAGE_PROCESSOR_ERROR result = imageProcessorStartPage(imageProcessor, &cups_header);
|
|
- if (result != IPE_SUCCESS){
|
|
- dbglog("DEBUG: imageProcessorStartPage failed result = %d\n", result);
|
|
- }
|
|
-
|
|
current_page_number++;
|
|
|
|
if (current_page_number == 1) {
|
|
@@ -745,11 +738,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
|
color_raster = rgbRaster;
|
|
black_raster = kRaster;
|
|
|
|
- result = imageProcessorProcessLine(imageProcessor, m_pPrinterBuffer, cups_header.cupsBytesPerLine);
|
|
- if (result != IPE_SUCCESS){
|
|
- dbglog("DEBUG: imageProcessorProcessLine failed result = %d\n", result);
|
|
- }
|
|
-
|
|
|
|
if ((y == 0) && !is_ljmono) {
|
|
//For ljmono, make sure that first line is not a blankRaster line.Otherwise printer
|
|
@@ -780,11 +768,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
|
}
|
|
} // for() loop end
|
|
|
|
- result = imageProcessorEndPage(imageProcessor);
|
|
- if (result != IPE_SUCCESS){
|
|
- dbglog("DEBUG: imageProcessorEndPage failed result = %d\n", result);
|
|
- }
|
|
-
|
|
|
|
m_Job.NewPage();
|
|
if (err != NO_ERROR) {
|
|
@@ -800,8 +783,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
|
rgbRaster = NULL;
|
|
}
|
|
|
|
- imageProcessorDestroy(imageProcessor);
|
|
-
|
|
unlink(hpPreProcessedRasterFile);
|
|
return ret_status;
|
|
}
|