From 28b9529c375b877469c90c29a9f1680adb172d16 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 8 Feb 2024 22:22:49 +0100 Subject: [PATCH] change read with memcpy --- src/kds_s2000w_net.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index dfc7ee9..0a95758 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -230,27 +230,27 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, return SANE_STATUS_EOF; } - int length_count = 0; - while(length_count < max_length) { - if (cancel) { - scan_started = 0; - *length = 0; - kds_s2000w_handler_stop_scan(); - sleep(1); - kds_s2000w_handler_close(); - sleep(1); - kds_s2000w_handler_open(); - return SANE_STATUS_CANCELLED; - } - - if (read_size >= current_metadata.size) - break; + if (cancel) { + scan_started = 0; + *length = 0; + kds_s2000w_handler_stop_scan(); + sleep(1); + kds_s2000w_handler_close(); + sleep(1); + kds_s2000w_handler_open(); + return SANE_STATUS_CANCELLED; + } - data[length_count] = image_data[read_size]; - length_count++; - read_size++; + if (read_size <= current_metadata.size - max_length) { + *length = max_length; + memcpy(data, current_metadata.image + read_size, *length); + } else { + *length = current_metadata.size - read_size; + memcpy(data, current_metadata.image + read_size, *length); } - *length = length_count; + + read_size += *length; + printf("length: %i\n", *length); printf("read size: %i\n", read_size); -- 2.39.5