From 766d5cee3d707056fb7ee4c0ae3aacecb0e05be0 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 20 Oct 2025 16:50:52 +0200 Subject: [PATCH] add move image method --- src/kds_s2000w_handler.c | 42 +++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 15307bc..30ab6b5 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -91,6 +91,29 @@ uint32_t _kds_s2000w_handler_is_color(const handler_t* h) return 0; } +blobdata_t* _kds_s2000w_handler_move_image(handler_t* h) +{ + blobdata_t* image = (blobdata_t*) h->image; + blobdata_t* scanner_image = malloc(sizeof(blobdata_t)); + if (scanner_image == NULL) + return NULL; + + scanner_image->data = malloc(sizeof(char) * image->size); + if (scanner_image->data == NULL) { + free(scanner_image); + scanner_image = NULL; + return NULL; + } + + scanner_image->size = image->size; + memcpy(scanner_image->data, image->data, image->size); + free(image->data); + image->data = NULL; + image->size = 0; + + return scanner_image; +} + handler_t* kds_s2000w_handler_init() { kds_s2000w_debug_printf(ALL, "init handler"); @@ -309,28 +332,15 @@ void kds_s2000w_handler_get_current_metadata(handler_t* h, metadata_t* params) image_metadata_t* mdata = malloc(sizeof(image_metadata_t)); if (mdata == NULL) return; - blobdata_t* scanner_image = malloc(sizeof(blobdata_t)); + + blobdata_t* scanner_image = _kds_s2000w_handler_move_image(h); if (scanner_image == NULL) { free(mdata); mdata = NULL; return; } - blobdata_t* image = (blobdata_t*) h->image; - scanner_image->data = malloc(sizeof(char) * image->size); - if (scanner_image->data == NULL) { - free(mdata); - mdata = NULL; - free(scanner_image); - scanner_image = NULL; - return; - } - - scanner_image->size = image->size; - memcpy(scanner_image->data, image->data, image->size); - free(image->data); - image->data = NULL; - image->size = 0; + blobdata_t* image = (blobdata_t*) h->image; kds_s2000w_image_converter_metadata_from_scanner_image(scanner_image, mdata); kds_s2000w_image_converter_to_pnm(scanner_image, image); kds_s2000w_debug_printf_int(DEBUG, "size of pnm image", image->size); -- 2.47.3