Add error handling

This commit is contained in:
Steins7 2024-04-15 17:17:23 +02:00
parent 075d9e17a6
commit 3bcb9c7df4

View File

@ -81,27 +81,37 @@ static uint32_t render_format(FormatCallback callback, void* arg,
if (in_format) {
switch (*c) {
case '%':
callback('%', arg);
if (callback('%', arg)) return 1;
break;
case 'c':
callback((uint8_t)va_arg(va, uint32_t), arg);
if (callback((uint8_t)va_arg(va, uint32_t), arg)) {
return 1;
}
break;
case 's':
{
const char* str = va_arg(va, const char*);
for (const char* c2 = str; *c2 != '\0'; ++c2) {
callback(*c2, arg);
if (callback(*c2, arg)) return 1;
}
}
break;
case 'i':
render_signed(callback, arg, va_arg(va, int32_t), 10);
if (render_signed(callback, arg, va_arg(va, int32_t), 10)) {
return 1;
}
break;
case 'u':
render_unsigned(callback, arg, va_arg(va, uint32_t), 10);
if (render_unsigned(callback, arg,
va_arg(va, uint32_t), 10)) {
return 1;
}
break;
case 'x':
render_unsigned(callback, arg, va_arg(va, uint32_t), 16);
if (render_unsigned(callback, arg,
va_arg(va, uint32_t), 16)) {
return 1;
}
break;
default:
//TODO manage error
@ -113,7 +123,7 @@ static uint32_t render_format(FormatCallback callback, void* arg,
in_format = true;
continue;
default:
callback(*c, arg);
if (callback(*c, arg)) return 1;
break;
}
}
@ -154,9 +164,9 @@ static uint32_t render_unsigned(FormatCallback callback, void* arg,
}
if (digit < 10) {
callback('0' + digit, arg);
if (callback('0' + digit, arg)) return 1;
} else {
callback('A' + digit - 10, arg);
if (callback('A' + digit - 10, arg)) return 1;
}
}