Merge pull request #5811 from spineki/fix-printf-hex-alternate-zero

Printf: Fix printf hex alternate zero
This commit is contained in:
Terts Diepraam 2024-01-17 10:28:30 +01:00 committed by GitHub
commit 3bd9f0ec65
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 2 deletions

View file

@ -156,13 +156,21 @@ impl Formatter for UnsignedInt {
format!("{x:x}")
}
UnsignedIntVariant::Hexadecimal(Case::Lowercase, Prefix::Yes) => {
format!("{x:#x}")
if x == 0 {
"0".to_string()
} else {
format!("{x:#x}")
}
}
UnsignedIntVariant::Hexadecimal(Case::Uppercase, Prefix::No) => {
format!("{x:X}")
}
UnsignedIntVariant::Hexadecimal(Case::Uppercase, Prefix::Yes) => {
format!("{x:#X}")
if x == 0 {
"0".to_string()
} else {
format!("{x:#X}")
}
}
};

View file

@ -645,6 +645,32 @@ fn partial_char() {
);
}
#[test]
fn sub_alternative_lower_hex_0() {
new_ucmd!().args(&["%#x", "0"]).succeeds().stdout_only("0");
}
#[test]
fn sub_alternative_lower_hex() {
new_ucmd!()
.args(&["%#x", "42"])
.succeeds()
.stdout_only("0x2a");
}
#[test]
fn sub_alternative_upper_hex_0() {
new_ucmd!().args(&["%#X", "0"]).succeeds().stdout_only("0");
}
#[test]
fn sub_alternative_upper_hex() {
new_ucmd!()
.args(&["%#X", "42"])
.succeeds()
.stdout_only("0x2A");
}
#[test]
fn char_as_byte() {
new_ucmd!().args(&["%c", "🙃"]).succeeds().stdout_only("ð");