From 102bf5200cfd82c1df6d503059e70c37b4925361 Mon Sep 17 00:00:00 2001 From: hryx Date: Fri, 28 Jun 2019 17:40:20 -0700 Subject: [PATCH] Fix string literal: not null-terminated (thanks @mikdusan) --- src-self-hosted/translate_c.zig | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig index d6b72f3dd8..574e395d1a 100644 --- a/src-self-hosted/translate_c.zig +++ b/src-self-hosted/translate_c.zig @@ -687,17 +687,17 @@ fn transStringLiteral( const kind = ZigClangStringLiteral_getKind(stmt); switch (kind) { .Ascii, .UTF8 => { - var clen: usize = undefined; - const cstr = ZigClangStringLiteral_getString_bytes_begin_size(stmt, &clen); - const zstr = try rp.c.str(cstr); + var len: usize = undefined; + const bytes_ptr = ZigClangStringLiteral_getString_bytes_begin_size(stmt, &len); + const str = bytes_ptr[0..len]; - var len: usize = 0; - for (zstr) |c| len += escapeChar(c).len; + len = 0; + for (str) |c| len += escapeChar(c).len; const buf = try rp.c.a().alloc(u8, len + "c\"\"".len); buf[0] = 'c'; buf[1] = '"'; - writeEscapedString(buf[2..], zstr); + writeEscapedString(buf[2..], str); buf[buf.len - 1] = '"'; const token = try appendToken(rp.c, .StringLiteral, buf);