#define MODEL "Kodak Alaris s2000w series"
#define TYPE "sheetfed scanner"
-SANE_Device* device_info_ptr;
-SANE_Device device_info;
+SANE_Device** device_info_ptr = NULL;
SANE_Status sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize)
{
void sane_kds_s2000w_net_exit(void)
{
kds_s2000w_debug_printf(ALL, "sane_kds_s2000w_net_exit");
+
+ free(device_info_ptr[0]);
+ device_info_ptr[0] = NULL;
+ free(device_info_ptr);
+ device_info_ptr = NULL;
}
SANE_Status sane_kds_s2000w_net_get_devices(SANE_Device*** device_list,
if (local_only)
return SANE_STATUS_NO_MEM;
- device_info.name = NAME;
- device_info.vendor = VENDOR;
- device_info.model = MODEL;
- device_info.type = TYPE;
- device_info_ptr = &device_info;
- *device_list = &device_info_ptr;
+ if (device_info_ptr == NULL) {
+ device_info_ptr = malloc(sizeof(SANE_Device*) * 2);
+ device_info_ptr[0] = malloc(sizeof(SANE_Device));
+ }
+
+ device_info_ptr[0]->name = NAME;
+ device_info_ptr[0]->vendor = VENDOR;
+ device_info_ptr[0]->model = MODEL;
+ device_info_ptr[0]->type = TYPE;
+ device_info_ptr[1] = NULL;
+ *device_list = device_info_ptr;
return SANE_STATUS_GOOD;
}
assert_string_equal(device_list[0][0]->vendor, "Kodak");
assert_string_equal(device_list[0][0]->model, "Kodak Alaris s2000w series");
assert_string_equal(device_list[0][0]->type, "sheetfed scanner");
+ assert_null(device_list[0][1]);
free(device_list);
device_list = NULL;