]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add test for empty device list when only local devices
authorBastian Dehn <hhaalo@arcor.de>
Sun, 10 Mar 2024 07:25:00 +0000 (08:25 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 10 Mar 2024 07:25:00 +0000 (08:25 +0100)
src/kds_s2000w_net.c
tests/kds_s2000w_net_tests.c

index df48283edf980494af70d5098bb07dce4c11881a..76e91d623e36f4367c1b0cc2c40399cff2967c60 100644 (file)
@@ -9,9 +9,6 @@
 #include "kds_s2000w_handler.h"
 #include "kds_s2000w_debug.h"
 
-SANE_Device** own_device_list = NULL;
-SANE_Device* device_info = NULL;
-
 int _sane_kds_s2000w_net_find_first_data_byte(const char* data)
 {
        debug_printf(ALL, "sane_kds_s2000w_net_find_first_data_byte");
@@ -42,21 +39,22 @@ SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback
 void _sane_kds_s2000w_net_exit(void)
 {
        debug_printf(ALL, "sane_kds_s2000w_net_exit");
-       free(device_info);
-       device_info = NULL;
-       free(own_device_list);
-       own_device_list = NULL;
 }
 
 SANE_Status _sane_kds_s2000w_net_get_devices(SANE_Device*** device_list,
        SANE_Bool local_only)
 {
        debug_printf(ALL, "sane_kds_s2000w_net_get_devices");
-       if (local_only)
+       SANE_Device** own_device_list = NULL;
+       if (local_only) {
+               own_device_list = malloc(sizeof(SANE_Device*) * 1);
+               own_device_list[0] = NULL;
+               *device_list = own_device_list;
                return SANE_STATUS_NO_MEM;
+       }
 
        own_device_list = malloc(sizeof(SANE_Device*) * 2);
-       device_info = malloc(sizeof(SANE_Device));
+       SANE_Device* device_info = malloc(sizeof(SANE_Device));
        device_info->name = "kds_s2000w_net";
        device_info->vendor = "Kodak";
        device_info->model = "Kodak Alaris s2000w series";
index f4cd8ca253a47ff7172b7061f49a2a6e785dc3df..c8c4dde0c1897b651920a5adc97a83bc5be30f74 100644 (file)
@@ -48,12 +48,27 @@ START_TEST(kds_s2000w_net_get_devices)
 }
 END_TEST
 
+START_TEST(kds_s2000w_net_get_devices_only_remote)
+{
+       SANE_Device*** device_list = malloc(sizeof(SANE_Device**));
+
+       SANE_Status result = _sane_kds_s2000w_net_get_devices(device_list, 1);
+
+       ck_assert_int_eq(result, SANE_STATUS_NO_MEM);
+       ck_assert_ptr_null(device_list[0][0]);
+
+       free(device_list);
+       device_list = NULL;
+}
+END_TEST
+
 Suite* net_tests()
 {
        Suite* net_tests_suite = suite_create("kds_s2000w_net");
 
        TCase* net_tests = tcase_create("kds_s2000w_net_tests");
        tcase_add_test(net_tests, kds_s2000w_net_get_devices);
+       tcase_add_test(net_tests, kds_s2000w_net_get_devices_only_remote);
        tcase_add_test(net_tests, kds_s2000w_net_get_parameters_with_image_data);
        suite_add_tcase(net_tests_suite, net_tests);
        return net_tests_suite;