Merge branch 'avision-fixes' into 'master'

avision: Fix issues found by code inspection

See merge request sane-project/backends!710
escl-add-user-and-password
Ralph Little 2022-04-24 17:08:20 +00:00
commit e0e9a614be
1 zmienionych plików z 24 dodań i 29 usunięć

Wyświetl plik

@ -112,7 +112,7 @@
* *
* . . - sane_cancel() : cancel operation, kill reader_process * . . - sane_cancel() : cancel operation, kill reader_process
* *
* . - sane_close() : close opened scanner-device, do_cancel, free buffer and handle * . - sane_close() : do_cancel, close opened scanner-device, free buffer and handle
* - sane_exit() : terminate use of backend, free devicename and device-structure * - sane_exit() : terminate use of backend, free devicename and device-structure
*/ */
@ -7541,18 +7541,15 @@ reader_process (void *data)
if (!s->duplex_rear_valid) { /* create new file for writing */ if (!s->duplex_rear_valid) { /* create new file for writing */
DBG (3, "reader_process: opening duplex rear file for writing.\n"); DBG (3, "reader_process: opening duplex rear file for writing.\n");
rear_fp = fopen (s->duplex_rear_fname, "w"); rear_fp = fopen (s->duplex_rear_fname, "w");
if (! rear_fp) {
fclose (fp);
return SANE_STATUS_NO_MEM;
}
} }
else { /* open saved rear data */ else { /* open saved rear data */
DBG (3, "reader_process: opening duplex rear file for reading.\n"); DBG (3, "reader_process: opening duplex rear file for reading.\n");
rear_fp = fopen (s->duplex_rear_fname, "r"); rear_fp = fopen (s->duplex_rear_fname, "r");
if (! rear_fp) { }
fclose (fp); if (! rear_fp) {
return SANE_STATUS_IO_ERROR; fclose (fp);
} fclose (fp_fd);
return SANE_STATUS_IO_ERROR;
} }
} }
@ -7970,13 +7967,8 @@ reader_process (void *data)
/* SOFTWARE SCALING WITH INTERPOLATION (IF NECESSARY) */ /* SOFTWARE SCALING WITH INTERPOLATION (IF NECESSARY) */
if (s->avdimen.hw_xres == s->avdimen.xres && if (s->avdimen.hw_xres != s->avdimen.xres ||
s->avdimen.hw_yres == s->avdimen.yres) /* No scaling */ s->avdimen.hw_yres != s->avdimen.yres) /* Software scaling */
{
fwrite (out_data, useful_bytes, 1, fp);
line += useful_bytes / s->avdimen.hw_bytes_per_line;
}
else /* Software scaling - watch out - this code bites back! */
{ {
int x; int x;
/* for convenience in the 16bit code path */ /* for convenience in the 16bit code path */
@ -8009,6 +8001,9 @@ reader_process (void *data)
break; break;
} }
DBG (8, "reader_process: out line: %d <- from: %d-%d\n",
line, sy, syy);
/* convert to offset in current stripe */ /* convert to offset in current stripe */
sy -= hw_line; sy -= hw_line;
syy -= hw_line; syy -= hw_line;
@ -8018,9 +8013,6 @@ reader_process (void *data)
sy = -1; sy = -1;
} }
DBG (8, "reader_process: out line: %d <- from: %d-%d\n",
line, sy, syy);
for (x = 0; x < s->params.pixels_per_line; ++x) { for (x = 0; x < s->params.pixels_per_line; ++x) {
const double bx = (-1.0 + s->avdimen.hw_pixels_per_line) * x / s->params.pixels_per_line; const double bx = (-1.0 + s->avdimen.hw_pixels_per_line) * x / s->params.pixels_per_line;
const int sx = (int)floor(bx); const int sx = (int)floor(bx);
@ -8125,6 +8117,11 @@ reader_process (void *data)
out_data + useful_bytes - s->avdimen.hw_bytes_per_line, out_data + useful_bytes - s->avdimen.hw_bytes_per_line,
s->avdimen.hw_bytes_per_line); s->avdimen.hw_bytes_per_line);
} }
else /* No scaling */
{
fwrite (out_data, useful_bytes, 1, fp);
line += useful_bytes / s->avdimen.hw_bytes_per_line;
}
} }
/* save image date in stripe buffer for next next stripe */ /* save image date in stripe buffer for next next stripe */
@ -8729,22 +8726,14 @@ void
sane_close (SANE_Handle handle) sane_close (SANE_Handle handle)
{ {
Avision_Scanner* prev; Avision_Scanner* prev;
Avision_Scanner* s = handle; Avision_Scanner* s;
int i; int i;
DBG (3, "sane_close:\n"); DBG (3, "sane_close:\n");
/* close the device */ for (prev = 0, s = first_handle; s; prev = s, s = s->next) {
if (avision_is_open (&s->av_con) ) {
avision_close (&s->av_con);
}
/* remove handle from list of open handles: */
prev = 0;
for (s = first_handle; s; s = s->next) {
if (s == handle) if (s == handle)
break; break;
prev = s;
} }
/* a handle we know about ? */ /* a handle we know about ? */
@ -8756,6 +8745,12 @@ sane_close (SANE_Handle handle)
if (s->scanning) if (s->scanning)
do_cancel (handle); do_cancel (handle);
/* close the device */
if (avision_is_open(&s->av_con)) {
avision_close(&s->av_con);
}
/* remove handle from list of open handles */
if (prev) if (prev)
prev->next = s->next; prev->next = s->next;
else else