fix: fix off-by-one for leading zeroes

This commit is contained in:
r00ster91
2022-08-19 12:03:14 +02:00
committed by Veikka Tuominen
parent be2bd5848a
commit 39f43fea8d
2 changed files with 13 additions and 1 deletions

View File

@@ -5647,7 +5647,7 @@ fn parseCNumLit(c: *Context, m: *MacroCtx) ParseError!Node {
switch (m.list[m.i].id) {
.IntegerLiteral => |suffix| {
var radix: []const u8 = "decimal";
if (lit_bytes.len > 2 and lit_bytes[0] == '0') {
if (lit_bytes.len >= 2 and lit_bytes[0] == '0') {
switch (lit_bytes[1]) {
'0'...'7' => {
// Octal

View File

@@ -3842,4 +3842,16 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub const FOO = "";
});
cases.add("leading zeroes",
\\#define O_RDONLY 00
\\#define HELLO 000
\\#define ZERO 0
\\#define WORLD 00000123
, &[_][]const u8{
\\pub const O_RDONLY = @as(c_int, 0o0);
\\pub const HELLO = @as(c_int, 0o00);
\\pub const ZERO = @as(c_int, 0);
\\pub const WORLD = @as(c_int, 0o0000123);
});
}