From ca9ad83d405a93c5c0e452b324fecdead39a904d Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 4 Jan 2025 19:45:11 +0100 Subject: [PATCH] change device list to free by exit --- src/kds_s2000w_net.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index dd57a81..de97c48 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -9,6 +9,18 @@ #include "kds_s2000w_handler.h" #include "kds_s2000w_debug.h" +SANE_Device** device_info_list = NULL; + +void _free_device_info_list(SANE_Device** device_info_list) +{ + free(device_info_list[0]); + device_info_list[0] = NULL; + free(device_info_list[1]); + device_info_list[1] = NULL; + free(device_info_list); + device_info_list = NULL; +} + SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize) { debug_printf(ALL, "sane_kds_s2000w_net_init"); @@ -20,6 +32,7 @@ SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback void _sane_kds_s2000w_net_exit(void) { + _free_device_info_list(device_info_list); debug_printf(ALL, "sane_kds_s2000w_net_exit"); } @@ -31,15 +44,14 @@ SANE_Status _sane_kds_s2000w_net_get_devices(SANE_Device*** device_list, if (local_only) return SANE_STATUS_NO_MEM; - SANE_Device** own_device_list = malloc(sizeof(SANE_Device*) * 2); - SANE_Device* device_info = malloc(sizeof(SANE_Device)); - device_info->name = "kds_s2000w_net"; - device_info->vendor = "Kodak"; - device_info->model = "Kodak Alaris s2000w series"; - device_info->type = "sheetfed scanner"; - own_device_list[0] = device_info; - own_device_list[1] = NULL; - *device_list = own_device_list; + device_info_list = malloc(sizeof(SANE_Device*) * 2); + device_info_list[0] = malloc(sizeof(SANE_Device)); + device_info_list[0]->name = "kds_s2000w_net"; + device_info_list[0]->vendor = "Kodak"; + device_info_list[0]->model = "Kodak Alaris s2000w series"; + device_info_list[0]->type = "sheetfed scanner"; + device_info_list[1] = NULL; + *device_list = device_info_list; return SANE_STATUS_GOOD; } -- 2.39.5