]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
fix read size with skip header data
authorBastian Dehn <hhaalo@arcor.de>
Sun, 11 Feb 2024 13:07:57 +0000 (14:07 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 11 Feb 2024 13:07:57 +0000 (14:07 +0100)
src/kds_s2000w_net.c
src/kds_s2000w_net.h
tests/kds_s2000w_net_tests.c

index 08329081bf5dd50d30501a744cd8c3d44e85ced2..83c44fba37ec8f74428b964d720e19e2486d4d14 100644 (file)
@@ -15,6 +15,11 @@ metadata* get_current_metadata()
        return &current_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;
index a344bbcf72faa4b2342ddb73a093a041008c4e4c..0c0642278bee3edd261bcaab7d04f55cc81865ab 100644 (file)
@@ -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);
index 69ac67551f60cde4dab28334b1b8adca3e4dd3d8..ac32c54a454e8adf5512a466f074de871f18d10c 100644 (file)
@@ -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;