From 28d08342d3f535113b701e61830ea93f30c7cf9d Mon Sep 17 00:00:00 2001 From: tastytea Date: Fri, 4 Jan 2019 19:10:01 +0100 Subject: [PATCH] C-interface: Added more error checking. --- src/c_interface.cpp | 20 +++++++++++++------- src/identiconpp_c.h | 4 ++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/c_interface.cpp b/src/c_interface.cpp index e25a9f4..d904ee8 100644 --- a/src/c_interface.cpp +++ b/src/c_interface.cpp @@ -76,13 +76,19 @@ bool identiconpp_setup(const uint8_t columns, const uint8_t rows, uint64_t identiconpp_generate(const char magick[], const char digest[], const uint16_t width) { - Magick::Image img = identicon->generate(digest, width); - Magick::Blob blob; - img.magick(magick); - img.write(&blob); - base64 = blob.base64(); - - return blob.base64().length(); + try + { + Magick::Image img = identicon->generate(digest, width); + Magick::Blob blob; + img.magick(magick); + img.write(&blob); + base64 = blob.base64(); + return blob.base64().length(); + } + catch (const std::exception &e) + { + return 0; + } } const char *identiconpp_base64() diff --git a/src/identiconpp_c.h b/src/identiconpp_c.h index dec0f5f..065d38b 100644 --- a/src/identiconpp_c.h +++ b/src/identiconpp_c.h @@ -55,7 +55,7 @@ extern "C" * @param foreground_len Length of the array of foreground colors * @param padding Padding in pixels { left & right, top & down } * - * @return { description_of_the_return_value } + * @return false on error. */ bool identiconpp_setup(const uint8_t columns, const uint8_t rows, identiconpp_algorithm type, @@ -71,7 +71,7 @@ extern "C" * @param digest The pre-computed digest * @param width The width of the identicon * - * @return Length of the generated base64-string + * @return Length of the generated base64-string, or 0 on error. */ uint64_t identiconpp_generate(const char magick[], const char digest[], const uint16_t width);