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;
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,