From: Bastian Dehn Date: Sun, 11 Feb 2024 13:07:57 +0000 (+0100) Subject: fix read size with skip header data X-Git-Tag: v1.0.0^2~302 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=7ca96009c34ce961ac5d4863d88d032f42f67b6d;p=sane-kds-s2000w-net.git fix read size with skip header data --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 0832908..83c44fb 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -15,6 +15,11 @@ metadata* get_current_metadata() return ¤t_metadata; } +int* get_read_size() +{ + return &read_size; +} + int _sane_kds_s2000w_net_find_first_data_byte(const char* data) { const int header_spaces = 3; @@ -276,7 +281,7 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, } *length = maxlen; - memcpy(data, current_metadata.image + skip_header_bytes + read_size, *length); + memcpy(data, current_metadata.image + read_size, *length); readed_bytes_per_line += *length; read_size += *length; diff --git a/src/kds_s2000w_net.h b/src/kds_s2000w_net.h index a344bbc..0c06422 100644 --- a/src/kds_s2000w_net.h +++ b/src/kds_s2000w_net.h @@ -9,6 +9,7 @@ // test helper method metadata* get_current_metadata(); +int* get_read_size(); int _sane_kds_s2000w_net_find_first_data_byte(const char* data); SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize); diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index 69ac675..ac32c54 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -23,13 +23,16 @@ END_TEST START_TEST(_sane_kds_s2000w_net_read_test) { metadata* current_metadata_ptr = get_current_metadata(); + int* read_size = get_read_size(); + *read_size = 0; current_metadata_ptr->scanned_all_complete = 1; current_metadata_ptr->lines = 1; current_metadata_ptr->bytes_per_line = 65536; - char* image = malloc(sizeof(char) * 65536); - for (int i = 0; i < 65536; i++) { + char* image = malloc(sizeof(char) * 65539); + for (int i = 0; i < 3; i++) { image[i] = 0x0a; } + image[4] = 0xff; current_metadata_ptr->image = image; SANE_Int maxlen = 65536; @@ -39,6 +42,7 @@ START_TEST(_sane_kds_s2000w_net_read_test) _sane_kds_s2000w_net_read(NULL, (void*) dataptr, maxlen, length); ck_assert_int_eq(*length, 65536); + ck_assert_mem_eq(dataptr, image + 3, 65536); free(dataptr); dataptr = NULL;