From 255d04ca4a002f339228eed2c0d891cd8ea4bb3e Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 28 Jan 2024 20:30:47 +0100 Subject: [PATCH] free explicit response with null --- src/kds_s2000w_client.c | 3 +++ src/kds_s2000w_handler.c | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index 07d21a1..0689533 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -33,6 +33,9 @@ response* kds_s2000w_client_response_init() void kds_s2000w_client_response_free(response* response) { + if (response == NULL) + return; + free(response->data); response->data = NULL; free(response); diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 7aba359..9ea8c54 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -70,6 +70,8 @@ current_state* kds_s2000w_handler_open() json_object_put(resObj); resObj = NULL; + kds_s2000w_client_response_free(resp); + resp = NULL; printf("sessionid: %li\n", state->sessionid); return state; @@ -87,6 +89,7 @@ void kds_s2000w_handler_close() json_object_put(resObj); resObj = NULL; kds_s2000w_client_response_free(resp); + resp = NULL; } current_state* kds_s2000w_handler_current_state() @@ -99,6 +102,7 @@ void kds_s2000w_handler_get_option(int option, void* value) json_object* value_object = NULL; switch(option) { case 0: + resp = kds_s2000w_client_response_init(); int result = kds_s2000w_client_get_option(state->sessionid, resp); resObj = json_tokener_parse(resp->data); config = json_object_object_get(resObj, "Configuration"); @@ -113,6 +117,8 @@ void kds_s2000w_handler_get_option(int option, void* value) int* int_value_ptr = (int*) value; *int_value_ptr = json_object_object_length(config) + 3; + kds_s2000w_client_response_free(resp); + resp = NULL; break; case 2: value_object = json_object_object_get(config, "DPI"); @@ -304,11 +310,14 @@ void kds_s2000w_handler_set_option(int option, void* value) break; } - const char* json_string = json_object_to_json_string_ext(resObj, JSON_C_TO_STRING_PLAIN); - resp->data = (char*) json_string; - resp->size = sizeof(char) * strlen(json_string); - resp->code = 0; - kds_s2000w_client_set_option(state->sessionid, resp); + // TODO: send request + // const char* json_string = json_object_to_json_string_ext(resObj, JSON_C_TO_STRING_PLAIN); + // resp = kds_s2000w_client_response_init(); + // resp->data = (char*) json_string; + // resp->size = sizeof(char) * strlen(json_string); + // resp->code = 0; + // kds_s2000w_client_set_option(state->sessionid, resp); + // kds_s2000w_client_response_free(resp); } void kds_s2000w_handler_set_option_auto(int option) -- 2.39.5