From 29f9171202e66f0cb46fcdf5a447923f3915e7fb Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 5 Jan 2025 16:07:23 +0100 Subject: [PATCH] free device info list by exit --- src/kds_s2000w_net.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 9e30552..5ab6486 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -14,6 +14,8 @@ #define MODEL "Kodak Alaris s2000w series" #define TYPE "sheetfed scanner" +SANE_Device** 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"); @@ -26,6 +28,11 @@ SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback void _sane_kds_s2000w_net_exit(void) { debug_printf(ALL, "sane_kds_s2000w_net_exit"); + + free(device_info_list[0]); + device_info_list[0] = NULL; + free(device_info_list); + device_info_list = NULL; } SANE_Status _sane_kds_s2000w_net_get_devices(SANE_Device*** device_list, @@ -36,13 +43,14 @@ SANE_Status _sane_kds_s2000w_net_get_devices(SANE_Device*** device_list, if (local_only) return SANE_STATUS_NO_MEM; - *device_list = malloc(sizeof(SANE_Device*) * 2); - device_list[0][0] = malloc(sizeof(SANE_Device)); - device_list[0][0]->name = NAME; - device_list[0][0]->vendor = VENDOR; - device_list[0][0]->model = MODEL; - device_list[0][0]->type = TYPE; - device_list[0][1] = NULL; + device_info_list = malloc(sizeof(SANE_Device*) * 2); + device_info_list[0] = malloc(sizeof(SANE_Device)); + device_info_list[0]->name = NAME; + device_info_list[0]->vendor = VENDOR; + device_info_list[0]->model = MODEL; + device_info_list[0]->type = TYPE; + device_info_list[1] = NULL; + *device_list = device_info_list; return SANE_STATUS_GOOD; } -- 2.39.5