ports/graphics/epsonscan2/files/patch-src_SaneWrapper_backend.cpp
Rainer Hurling 27df5bce08 graphics/epsonscan2: Add new port for Epson Scanners
This is a port of the Seiko/Epson Epsonscan2 scanner engine and GUI[1].

It provides a complete alternative to sane/xsane with its own scanner engine and GUI.
It also provides a sane back-end library (libsane-epsonscan2.so) so that it works with the sane package.

There are two parts to this port:
  - graphics/epsonscan2 - the main scanner engine and GUI that
    works with (most) USB scanners
  - graphics/epsonscan2-non-free-plugin - support for Epson's
    Linux binary that adds network access to scanners and
    usb access to some particular scanners

Please read the file %%PREFIX%%/lib/epsonscan2/Read_me.FreeBSD for notes on how to set this up and use it.

[1] https://download.ebz.epson.net/man/linux/epsonscan2_e.html

PR:		261891
Reviewed by:	(partly) Tatsuki Makino <tatsuki_makino@hotmail.com>, diizzy@
2022-04-03 10:44:09 +02:00

37 lines
1.4 KiB
C++

--- src/SaneWrapper/backend.cpp.orig 2021-11-25 00:56:59 UTC
+++ src/SaneWrapper/backend.cpp
@@ -220,7 +220,8 @@ sane_open (SANE_String_Const device_name, SANE_Handle
{
return SANE_STATUS_INVAL;
}
- ((Epson_Scanner*)handle)->out_buffer = NULL;
+ // XXX next causes a SEGV on FreeBSD because out_buffer is not yet allocated
+ //((Epson_Scanner*)handle)->out_buffer = NULL;
if (!epson_backend->sane_dev)
{
const SANE_Device **dev = NULL;
@@ -355,6 +356,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
unsigned int nSize = 100;
unsigned char* tmp_buf = (unsigned char*)::malloc(nSize);
SDIChar* output_path;
+ SDIError outError = kSDIErrorNone;
if(tmp_buf){
memset(tmp_buf, 0, nSize);
}else {
@@ -363,7 +365,6 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
goto ERROR_2;
}
output_path = (SDIChar*)tmp_buf;
- SDIError outError;
s->hw->sv->SDIImage_CreatePtr_(&s->outImageData);
s->hw->sv->SDIScannerDriver_GetNextTransferEventPtr_(s->hw->sv->driver,
&outType,
@@ -442,7 +443,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
}
}else {
status = SANE_STATUS_INVAL;
- fclose(fp);
+ //fclose(fp); // shouldn't try to close file that isn't open!
goto ERROR;
}
if(s->hw->sv->device_data.ColorType.select == kSDIColorTypeMono1){