From: Bastian Dehn Date: Mon, 20 Oct 2025 17:38:53 +0000 (+0200) Subject: change get metadata with return type X-Git-Tag: v1.1.15^2~11 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=186c90f8998e3a9c577f9464c8694413fd21bd47;p=sane-kds-s2000w-net.git change get metadata with return type --- diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 8b9a7ce..ffa5286 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -341,18 +341,19 @@ void kds_s2000w_handler_get_current_metadata(handler_t* h, metadata_t* params) if (h->image->data == NULL) return; - image_metadata_t* mdata = malloc(sizeof(image_metadata_t)); - if (mdata == NULL) + blobdata_t* scanner_image = _kds_s2000w_handler_move_image(h); + if (scanner_image == NULL) return; - blobdata_t* scanner_image = _kds_s2000w_handler_move_image(h); - if (scanner_image == NULL) { - free(mdata); - mdata = NULL; + image_metadata_t* mdata = kds_s2000w_image_converter_get_metadata(scanner_image); + if (mdata == NULL) { + free(scanner_image->data); + scanner_image->data = NULL; + free(scanner_image); + scanner_image = NULL; return; } - kds_s2000w_image_converter_metadata_from_scanner_image(scanner_image, mdata); kds_s2000w_image_converter_to_pnm(scanner_image, (blobdata_t*) h->image); kds_s2000w_debug_printf_int(DEBUG, "size of pnm image", h->image->size); h->scan_status->read_bytes = _kds_s2000w_handler_find_first_data_byte(h->image); diff --git a/src/kds_s2000w_image_converter.h b/src/kds_s2000w_image_converter.h index f4af842..9f3fa38 100644 --- a/src/kds_s2000w_image_converter.h +++ b/src/kds_s2000w_image_converter.h @@ -14,7 +14,7 @@ typedef struct { uint8_t depth; } image_metadata_t; -void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata_t* image, image_metadata_t* mdata); +image_metadata_t* kds_s2000w_image_converter_get_metadata(blobdata_t* image); void kds_s2000w_image_converter_to_pnm(blobdata_t* in, blobdata_t* out); #endif \ No newline at end of file diff --git a/src/kds_s2000w_image_converter_netpbm.c b/src/kds_s2000w_image_converter_netpbm.c index 3277d26..6776630 100644 --- a/src/kds_s2000w_image_converter_netpbm.c +++ b/src/kds_s2000w_image_converter_netpbm.c @@ -281,27 +281,33 @@ void _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(j_decompress_ptr cinfo decompress_data = NULL; } -void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata_t* image, image_metadata_t* mdata) +image_metadata_t* kds_s2000w_image_converter_get_metadata(blobdata_t* image) { kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_metadata_from_scanner_image"); if (image->size < 2) - return; + return NULL; + + image_metadata_t* mdata = malloc(sizeof(image_metadata_t)); + if (mdata == NULL) + return NULL; if (kds_s2000w_image_type_check_is_pnm(image)) { _kds_s2000w_image_converter_pnm_metadata(image, mdata); - return; + return mdata; } if (kds_s2000w_image_type_check_is_jpeg(image)) { _kds_s2000w_image_converter_jpeg_metadata(image, mdata); - return; + return mdata; } if (kds_s2000w_image_type_check_is_tiff(image)) { _kds_s2000w_image_converter_tiff_metadata(image, mdata); - return; + return mdata; } + + return NULL; } void _kds_s2000w_image_converter_jpg_to_pnm(blobdata_t* in, blobdata_t* out) diff --git a/tests/kds_s2000w_image_converter_tests.c b/tests/kds_s2000w_image_converter_tests.c index 5f69920..931c789 100644 --- a/tests/kds_s2000w_image_converter_tests.c +++ b/tests/kds_s2000w_image_converter_tests.c @@ -35,7 +35,8 @@ void get_metadata_from_image_test() for (uint32_t i = 11; i < 17; i++) { image_data[i] = (char) 0xff; } - image_metadata_t* mdata = malloc(sizeof(image_metadata_t)); + + image_metadata_t* mdata = kds_s2000w_image_converter_get_metadata(image); if (mdata == NULL) { free(image->data); image->data = NULL; @@ -43,11 +44,6 @@ void get_metadata_from_image_test() image = NULL; return; } - mdata->width = 0; - mdata->height = 0; - mdata->depth = 0; - - kds_s2000w_image_converter_metadata_from_scanner_image(image, mdata); assert_int_equal(mdata->width, 2); assert_int_equal(mdata->height, 1);