From 98a504660df8f92f07f97608d4823e4391b1347f Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 27 Jan 2024 09:04:04 +0100 Subject: [PATCH] change allocate option descriptor --- src/kds_s2000w_net.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 4aad460..dd8f938 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -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, -- 2.39.5