#include "kds_s2000w_option_descriptors.h"
#define BITS16 16
+#define MAX_AVAILABLE_OPTIONS 48
typedef option_descriptor_t* (*descriptor_fn)(mask_option_t* mask);
typedef struct {
if (kds_s2000w_option_descriptors == NULL)
return SANE_STATUS_NO_MEM;
- kds_s2000w_option_descriptors->size = _kds_s2000w_option_descriptor_option_count_from_mask(mask);;
+ kds_s2000w_option_descriptors->size = MAX_AVAILABLE_OPTIONS;
+ size_t available_options = _kds_s2000w_option_descriptor_option_count_from_mask(mask);
+ if (available_options < MAX_AVAILABLE_OPTIONS)
+ kds_s2000w_option_descriptors->size = available_options;
+
kds_s2000w_option_descriptors->descriptors = malloc(sizeof(option_descriptor_t*) * kds_s2000w_option_descriptors->size);
if (kds_s2000w_option_descriptors->descriptors == NULL) {
free(kds_s2000w_option_descriptors);
if (mask == NULL)
return 1;
- mask->standard_group = 0xf;
- mask->geometry_group = 0x3f;
- mask->boldness_smoothing_group = 0xf;
- mask->boldness_color_group = 0x1fff;
- mask->image_processing_group = 0x7f;
- mask->feeder_group = 0x7f;
+ memset(mask, 0xff, sizeof(mask_option_t));
kds_s2000w_option_descriptors_init(mask);
free(mask);
mask = NULL;
if (mask == NULL)
return 1;
- mask->standard_group = 0xf;
- mask->geometry_group = 0x3f;
- mask->boldness_smoothing_group = 0xf;
- mask->boldness_color_group = 0x1fff;
- mask->image_processing_group = 0x7f;
- mask->feeder_group = 0x7f;
+ memset(mask, 0xff, sizeof(mask_option_t));
kds_s2000w_option_descriptors_init(mask);
free(mask);
mask = NULL;
if (mask == NULL)
return;
- mask->standard_group = 0xf;
- mask->geometry_group = 0x3f;
- mask->boldness_smoothing_group = 0xf;
- mask->boldness_color_group = 0x1fff;
- mask->image_processing_group = 0x7f;
- mask->feeder_group = 0x7f;
+ memset(mask, 0xff, sizeof(mask_option_t));
SANE_Status status = kds_s2000w_option_descriptors_init(mask);
free(mask);
mask = NULL;
if (mask == NULL)
return 1;
- mask->standard_group = 0xf;
- mask->geometry_group = 0x3f;
- mask->boldness_smoothing_group = 0xf;
- mask->boldness_color_group = 0x1fff;
- mask->image_processing_group = 0x7f;
- mask->feeder_group = 0x7f;
+ memset(mask, 0xff, sizeof(mask_option_t));
SANE_Status status = kds_s2000w_option_descriptors_init(mask);
free(mask);
mask = NULL;