From bce38e160386cf48f0331ef67b76b543221d32c2 Mon Sep 17 00:00:00 2001 From: Pablo Garrido Date: Tue, 29 Mar 2022 15:40:49 +0200 Subject: [PATCH] Reduce error handling static size (#14) (#15) This reverts commit befc608e21c653404f2fd876986969286125a527. Reduce error handling static size (#14) (#15) Signed-off-by: Pablo Garrido (cherry picked from commit 1176652124c12b23cb58f052077901d2c24dbf39) Co-authored-by: Pablo Garrido Revert "Revert "Install headers to include\${PROJECT_NAME} (#351)"" This reverts commit 4546892d5b3b4ef0d6e906c55e4b898c4c6d965a. --- include/rcutils/error_handling.h | 17 +++++++++++++++-- src/error_handling_helpers.h | 4 ++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/include/rcutils/error_handling.h b/include/rcutils/error_handling.h index 78b3a008..3c5cf936 100644 --- a/include/rcutils/error_handling.h +++ b/include/rcutils/error_handling.h @@ -52,7 +52,7 @@ extern "C" #elif !defined(RCUTILS_NO_FILESYSTEM) #define RCUTILS_SAFE_FWRITE_TO_STDERR(msg) \ do {fwrite(msg, sizeof(char), strlen(msg), stderr);} while (0) -#else +#else #define RCUTILS_SAFE_FWRITE_TO_STDERR(msg) #endif @@ -65,6 +65,8 @@ extern "C" * \param[in] format_string The string to be used as the format of the error message. * \param[in] ... Arguments for the format string. */ + +#if !defined(RCUTILS_AVOID_DYNAMIC_ALLOCATION) #define RCUTILS_SAFE_FWRITE_TO_STDERR_WITH_FORMAT_STRING(format_string, ...) \ do { \ char output_msg[RCUTILS_ERROR_MESSAGE_MAX_LENGTH]; \ @@ -75,7 +77,11 @@ extern "C" RCUTILS_SAFE_FWRITE_TO_STDERR(output_msg); \ } \ } while (0) +#else +#define RCUTILS_SAFE_FWRITE_TO_STDERR_WITH_FORMAT_STRING(format_string, ...) +#endif +#if !defined(RCUTILS_AVOID_DYNAMIC_ALLOCATION) /// The maximum length a formatted number is allowed to have. #define RCUTILS_ERROR_STATE_LINE_NUMBER_STR_MAX_LENGTH 20 // "18446744073709551615" @@ -102,6 +108,13 @@ extern "C" RCUTILS_ERROR_STATE_LINE_NUMBER_STR_MAX_LENGTH - \ RCUTILS_ERROR_FORMATTING_CHARACTERS - \ 1) +#else +#define RCUTILS_ERROR_STATE_LINE_NUMBER_STR_MAX_LENGTH 1 +#define RCUTILS_ERROR_FORMATTING_CHARACTERS 1 +#define RCUTILS_ERROR_MESSAGE_MAX_LENGTH 1 +#define RCUTILS_ERROR_STATE_MESSAGE_MAX_LENGTH 1 +#define RCUTILS_ERROR_STATE_FILE_MAX_LENGTH 1 +#endif // RCUTILS_AVOID_DYNAMIC_ALLOCATION /// Struct wrapping a fixed-size c string used for returning the formatted error string. typedef struct rcutils_error_string_s @@ -123,7 +136,7 @@ typedef struct rcutils_error_state_s } rcutils_error_state_t; // make sure our math is right... -#if __STDC_VERSION__ >= 201112L +#if __STDC_VERSION__ >= 201112L && !defined(RCUTILS_AVOID_DYNAMIC_ALLOCATION) static_assert( sizeof(rcutils_error_string_t) == ( RCUTILS_ERROR_STATE_MESSAGE_MAX_LENGTH + diff --git a/src/error_handling_helpers.h b/src/error_handling_helpers.h index 4914c4fe..b6a1dc67 100644 --- a/src/error_handling_helpers.h +++ b/src/error_handling_helpers.h @@ -108,6 +108,7 @@ static void __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size) { +#if !defined(RCUTILS_AVOID_DYNAMIC_ALLOCATION) assert(buffer != NULL); assert(buffer_size >= 21); (void)buffer_size; // prevent warning in release builds where there is no assert(...) @@ -131,6 +132,7 @@ __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buf // reverse the string in place __rcutils_reverse_str(buffer, strnlen(buffer, 21)); +#endif } // do not use externally, internal function which is only to be used by error_handling.c @@ -140,6 +142,7 @@ __rcutils_format_error_string( rcutils_error_string_t * error_string, const rcutils_error_state_t * error_state) { +#if !defined(RCUTILS_AVOID_DYNAMIC_ALLOCATION) assert(error_string != NULL); assert(error_state != NULL); static const char format_1[] = ", at "; @@ -173,6 +176,7 @@ __rcutils_format_error_string( written = __rcutils_copy_string(offset, bytes_left, line_number_buffer); offset += written; offset[0] = '\0'; +#endif } #ifdef __cplusplus