From b452a6cfc4afe3f3d00ffecd112f24e9ee123481 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 26 Sep 2025 15:10:01 +0200 Subject: [PATCH] free descriptor extra method --- src/kds_s2000w_option_descriptors.c | 42 ++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index e406831..4028f61 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -11,6 +11,29 @@ option_descriptor** descriptors = NULL; uint8_t max_option_count = 0; +void _kds_s2000w_option_descriptor_descriptor_free(option_descriptor* descriptor) +{ + if (descriptor->descriptor->constraint_type == SANE_CONSTRAINT_STRING_LIST) { + free((void*) descriptor->descriptor->constraint.string_list); + descriptor->descriptor->constraint.string_list = NULL; + } + + if (descriptor->descriptor->constraint_type == SANE_CONSTRAINT_WORD_LIST) { + free((void*) descriptor->descriptor->constraint.word_list); + descriptor->descriptor->constraint.word_list = NULL; + } + + if (descriptor->descriptor->constraint_type == SANE_CONSTRAINT_RANGE) { + free((void*) descriptor->descriptor->constraint.range); + descriptor->descriptor->constraint.range = NULL; + } + + free(descriptor->descriptor); + descriptor->descriptor = NULL; + free(descriptor); + descriptor = NULL; +} + SANE_Option_Descriptor* _kds_s2000w_option_descriptor_num_options() { kds_s2000w_debug_printf(ALL, "kds_s2000w_option_descriptor_num_options"); @@ -1381,24 +1404,7 @@ void kds_s2000w_option_descriptors_free() kds_s2000w_debug_printf(ALL, "kds_s2000w_option_descriptors_free"); for (int i = 0; i < max_option_count; i++) { - if (descriptors[i]->descriptor->constraint_type == SANE_CONSTRAINT_STRING_LIST) { - free((void*) descriptors[i]->descriptor->constraint.string_list); - descriptors[i]->descriptor->constraint.string_list = NULL; - } - - if (descriptors[i]->descriptor->constraint_type == SANE_CONSTRAINT_WORD_LIST) { - free((void*) descriptors[i]->descriptor->constraint.word_list); - descriptors[i]->descriptor->constraint.word_list = NULL; - } - - if (descriptors[i]->descriptor->constraint_type == SANE_CONSTRAINT_RANGE) { - free((void*) descriptors[i]->descriptor->constraint.range); - descriptors[i]->descriptor->constraint.range = NULL; - } - - free(descriptors[i]->descriptor); - descriptors[i]->descriptor = NULL; - free(descriptors[i]); + _kds_s2000w_option_descriptor_descriptor_free(descriptors[i]); descriptors[i] = NULL; } -- 2.47.3