]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
free descriptor extra method
authorBastian Dehn <hhaalo@arcor.de>
Fri, 26 Sep 2025 13:10:01 +0000 (15:10 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Fri, 26 Sep 2025 13:10:01 +0000 (15:10 +0200)
src/kds_s2000w_option_descriptors.c

index e40683160470bd5dfc434a677c0df5b9e8683ae4..4028f61d7eb2804fafbb2cda2865be43e3b2ff42 100644 (file)
 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;
        }