1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 08:44:58 +00:00

AK+Tests: Fix formatting of infinity and NaN values

When I added this code in 1472f6d, I forgot to add tests for it. That's
why I didn't realize that the values were appended to the wrong
FormatBuilder object, so an empty string was returned instead of the
expected "nan"/"inf". This made debugging some FPU issues with the
ScummVM port significantly more difficult.
This commit is contained in:
Daniel Bertalan 2021-10-30 10:43:21 +02:00 committed by Andreas Kling
parent 2c93ee50cd
commit fed9cb5d2d
2 changed files with 9 additions and 4 deletions

View file

@ -365,14 +365,14 @@ void FormatBuilder::put_f64(
string_builder.append('-');
else if (sign_mode == SignMode::Always)
string_builder.append('+');
else
else if (sign_mode == SignMode::Reserved)
string_builder.append(' ');
if (isnan(value))
string_builder.append(upper_case ? "NAN"sv : "nan"sv);
else
string_builder.append(upper_case ? "INF"sv : "inf"sv);
format_builder.put_string(string_builder.string_view(), align, min_width, NumericLimits<size_t>::max(), fill);
put_string(string_builder.string_view(), align, min_width, NumericLimits<size_t>::max(), fill);
return;
}
@ -431,14 +431,14 @@ void FormatBuilder::put_f80(
string_builder.append('-');
else if (sign_mode == SignMode::Always)
string_builder.append('+');
else
else if (sign_mode == SignMode::Reserved)
string_builder.append(' ');
if (isnan(value))
string_builder.append(upper_case ? "NAN"sv : "nan"sv);
else
string_builder.append(upper_case ? "INF"sv : "inf"sv);
format_builder.put_string(string_builder.string_view(), align, min_width, NumericLimits<size_t>::max(), fill);
put_string(string_builder.string_view(), align, min_width, NumericLimits<size_t>::max(), fill);
return;
}