diff --git a/tests/paramgrill.c b/tests/paramgrill.c index 984fb308f..7e4c6b75f 100644 --- a/tests/paramgrill.c +++ b/tests/paramgrill.c @@ -886,6 +886,11 @@ int optimizeForSize(const char* inFileName, U32 targetSpeed) return 0; } +static void errorOut(const char* msg) +{ + DISPLAY("%s \n", msg); exit(1); +} + /*! readU32FromChar() : * @return : unsigned integer value read from input in `char` format. * allows and interprets K, KB, KiB, M, MB and MiB suffix. @@ -893,23 +898,19 @@ int optimizeForSize(const char* inFileName, U32 targetSpeed) * Note : function will exit() program if digit sequence overflows */ static unsigned readU32FromChar(const char** stringPtr) { + const char errorMsg[] = "error: numeric value too large"; unsigned result = 0; while ((**stringPtr >='0') && (**stringPtr <='9')) { unsigned const max = (((unsigned)(-1)) / 10) - 1; - if (result > max) { - DISPLAY("error: numeric value too large \n"); - exit(1); - } + if (result > max) errorOut(errorMsg); result *= 10, result += **stringPtr - '0', (*stringPtr)++ ; } if ((**stringPtr=='K') || (**stringPtr=='M')) { unsigned const maxK = ((unsigned)(-1)) >> 10; + if (result > maxK) errorOut(errorMsg); result <<= 10; if (**stringPtr=='M') { - if (result > maxK) { - DISPLAY("error: numeric value too large \n"); - exit(1); - } + if (result > maxK) errorOut(errorMsg); result <<= 10; } (*stringPtr)++; /* skip `K` or `M` */