]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add test for failed init handler
authorBastian Dehn <hhaalo@arcor.de>
Thu, 30 Oct 2025 18:05:59 +0000 (19:05 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 30 Oct 2025 18:05:59 +0000 (19:05 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_net.c
tests/kds_s2000w_net_tests.c

index 0c0dd140553d6069e091139b0d6e09914509f0b3..a49f48709aeb4af3f319fd893abdd9bf5a97e6d0 100644 (file)
@@ -260,8 +260,10 @@ connection_state_t kds_s2000w_handler_open(const char* devicename, void** handle
                return NOTCONNECTED;
 
        handler_t* h = kds_s2000w_handler_init();
-       if (h == NULL)
+       if (h == NULL) {
+               *handle = NULL;
                return NOTCONNECTED;
+       }
 
        *handle = h;
        _kds_s2000w_handler_load_config(h);
index 6292392cca3c1e0a371eee3d94595a6f5bbf71e1..92ac44b37aa2c3be772743db29d458db1f7387a5 100644 (file)
@@ -78,7 +78,7 @@ SANE_Status sane_kds_s2000w_net_open(SANE_String_Const devicename,
                return SANE_STATUS_INVAL;
 
        connection_state_t state = kds_s2000w_handler_open(devicename, handle);
-       if (handle == NULL)
+       if (*handle == NULL)
                return SANE_STATUS_NO_MEM;
 
        handler_t* h = (handler_t*) *handle;
index 5d8b8c8a1ba39a204a878e0512706cb44939d9cc..7ced344a467bd66339e869acfca6e5f45afb13fc 100644 (file)
@@ -10,6 +10,7 @@
 #include "../src/kds_s2000w_client.h"
 #include "../src/kds_s2000w_net.h"
 #include "../src/kds_s2000w_handler.h"
+#include "../src/kds_s2000w_option_descriptors.h"
 
 #define MAJOR 1
 #define MINOR 1
@@ -305,6 +306,26 @@ void sane_kds_s2000w_net_open_test()
        free(hlist);
        hlist = NULL;
        kds_s2000w_client_free();
+       kds_s2000w_option_descriptors_free();
+}
+
+void sane_kds_s2000w_net_open_no_mem_init_hanlder_test()
+{
+       void** hlist = malloc(sizeof(void*));
+       if (hlist == NULL)
+               return;
+
+       set_no_mem_counter(0);
+       SANE_Status status = sane_kds_s2000w_net_open("kds_s2000w_net", hlist);
+       handler_t* h = (handler_t*) *hlist;
+
+       assert_int_equal(status, SANE_STATUS_NO_MEM);
+
+       kds_s2000w_handler_free(h);
+       h = NULL;
+       free(hlist);
+       hlist = NULL;
+       kds_s2000w_option_descriptors_free();
 }
 
 void sane_kds_s2000w_net_open_busy_device_test()
@@ -767,6 +788,7 @@ int main()
                cmocka_unit_test(sane_kds_s2000w_net_get_parameter_color_test),
                cmocka_unit_test(sane_kds_s2000w_net_get_parameter_bw_test),
                cmocka_unit_test(sane_kds_s2000w_net_open_test),
+               cmocka_unit_test(sane_kds_s2000w_net_open_no_mem_init_hanlder_test),
                cmocka_unit_test(sane_kds_s2000w_net_open_busy_device_test),
                cmocka_unit_test(sane_kds_s2000w_net_open_invalid_test),
                cmocka_unit_test(sane_kds_s2000w_net_open_not_connected_test),