Commit b886690d authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Sergey Senozhatsky

lib/vsprintf: Replace hidden BUILD_BUG_ON() with static_assert()

First of all, there is no compile time check for the SMALL
to be ' ' (0x20, i.e. space). Second, for ZEROPAD the check
is hidden in the code.

For better maintenance replace BUILD_BUG_ON() with static_assert()
for ZEROPAD and move it closer to the definition. While at it,
introduce check for SMALL.
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
Reviewed-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
Link: https://lore.kernel.org/r/20200731180825.30575-1-andriy.shevchenko@linux.intel.comSigned-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
parent b4a461e7
...@@ -381,6 +381,9 @@ int num_to_str(char *buf, int size, unsigned long long num, unsigned int width) ...@@ -381,6 +381,9 @@ int num_to_str(char *buf, int size, unsigned long long num, unsigned int width)
#define SMALL 32 /* use lowercase in hex (must be 32 == 0x20) */ #define SMALL 32 /* use lowercase in hex (must be 32 == 0x20) */
#define SPECIAL 64 /* prefix hex with "0x", octal with "0" */ #define SPECIAL 64 /* prefix hex with "0x", octal with "0" */
static_assert(ZEROPAD == ('0' - ' '));
static_assert(SMALL == ' ');
enum format_type { enum format_type {
FORMAT_TYPE_NONE, /* Just a string part */ FORMAT_TYPE_NONE, /* Just a string part */
FORMAT_TYPE_WIDTH, FORMAT_TYPE_WIDTH,
...@@ -507,7 +510,7 @@ char *number(char *buf, char *end, unsigned long long num, ...@@ -507,7 +510,7 @@ char *number(char *buf, char *end, unsigned long long num,
/* zero or space padding */ /* zero or space padding */
if (!(spec.flags & LEFT)) { if (!(spec.flags & LEFT)) {
char c = ' ' + (spec.flags & ZEROPAD); char c = ' ' + (spec.flags & ZEROPAD);
BUILD_BUG_ON(' ' + ZEROPAD != '0');
while (--field_width >= 0) { while (--field_width >= 0) {
if (buf < end) if (buf < end)
*buf = c; *buf = c;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment