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");
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;
}