diff --git a/src/unity.c b/src/unity.c index 23eaefe..05fa6ea 100644 --- a/src/unity.c +++ b/src/unity.c @@ -280,10 +280,19 @@ void UnityPrintMask(const _U_UINT mask, const _U_UINT number) //----------------------------------------------- #ifdef UNITY_FLOAT_VERBOSE #include + +#ifndef UNITY_VERBOSE_NUMBER_MAX_LENGTH +# ifdef UNITY_DOUBLE_VERBOSE +# define UNITY_VERBOSE_NUMBER_MAX_LENGTH 317 +# else +# define UNITY_VERBOSE_NUMBER_MAX_LENGTH 47 +# endif +#endif + void UnityPrintFloat(_UF number) { - char TempBuffer[32]; - sprintf(TempBuffer, "%.6f", number); + char TempBuffer[UNITY_VERBOSE_NUMBER_MAX_LENGTH + 1]; + snprintf(TempBuffer, sizeof(TempBuffer), "%.6f", number); UnityPrint(TempBuffer); } #endif diff --git a/src/unity.h b/src/unity.h index d9f41de..34c43ff 100644 --- a/src/unity.h +++ b/src/unity.h @@ -44,6 +44,7 @@ void tearDown(void); // - define UNITY_DOUBLE_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_DOUBLE // - define UNITY_DOUBLE_TYPE to specify something other than double // - define UNITY_DOUBLE_VERBOSE to print floating point values in errors (uses sprintf) +// - define UNITY_VERBOSE_NUMBER_MAX_LENGTH to change maximum length of printed numbers (used by sprintf) // Output // - by default, Unity prints to standard out with putchar. define UNITY_OUTPUT_CHAR(a) with a different function if desired