]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change allocate option descriptor
authorBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 08:04:04 +0000 (09:04 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 08:04:04 +0000 (09:04 +0100)
src/kds_s2000w_net.c

index 4aad4602afff1664990912859c535b96969e0ade..dd8f938c7307da5edb678ceda84af3dcd276bc11 100644 (file)
@@ -13,12 +13,27 @@ SANE_Device* device_info = NULL;
 SANE_Parameters* parameter = NULL;
 option_descriptors option_descriptor_array;
 
-SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize)
+void _init_option_descriptor_array()
 {
-       *version_code = SANE_VERSION_CODE(1, 0, 0);
        option_descriptor_array.option_descriptors = malloc(sizeof(SANE_Option_Descriptor**));
        option_descriptor_array.option_descriptors[0] = NULL;
        option_descriptor_array.length = 0;
+}
+
+void _free_option_descriptor_array()
+{
+       for (int i = 0; i < option_descriptor_array.length; i++) {
+               free(option_descriptor_array.option_descriptors[i]);
+               option_descriptor_array.option_descriptors[i] = NULL;
+       }
+       free(option_descriptor_array.option_descriptors);
+       option_descriptor_array.option_descriptors = NULL;
+}
+
+SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize)
+{
+       *version_code = SANE_VERSION_CODE(1, 0, 0);
+       _init_option_descriptor_array();
        device_info = malloc(sizeof(SANE_Device));
        parameter = malloc(sizeof(SANE_Parameters));
        return SANE_STATUS_GOOD;
@@ -33,12 +48,7 @@ void _sane_kds_s2000w_net_exit(void)
        device_info = NULL;
        free(parameter);
        parameter = NULL;
-       for (int i = 0; i < option_descriptor_array.length; i++) {
-               free(option_descriptor_array.option_descriptors[i]);
-               option_descriptor_array.option_descriptors[i] = NULL;
-       }
-       free(option_descriptor_array.option_descriptors);
-       option_descriptor_array.option_descriptors = NULL;
+       _free_option_descriptor_array();
 }
 
 SANE_Status _sane_kds_s2000w_net_get_devices(SANE_Device*** device_list,