diff --git a/src/terminal/kitty/graphics_exec.zig b/src/terminal/kitty/graphics_exec.zig index 759cf14b2..7a7913ad4 100644 --- a/src/terminal/kitty/graphics_exec.zig +++ b/src/terminal/kitty/graphics_exec.zig @@ -41,7 +41,11 @@ pub fn execute( return null; } - log.debug("executing kitty graphics command: {}", .{cmd.control}); + log.debug("executing kitty graphics command: {}", .{cmd: { + var copy = cmd.*; + copy.data = ""; + break :cmd copy; + }}); const resp_: ?Response = switch (cmd.control) { .query => query(alloc, cmd), diff --git a/src/terminal/kitty/graphics_image.zig b/src/terminal/kitty/graphics_image.zig index f9ac2de8e..d924bbdba 100644 --- a/src/terminal/kitty/graphics_image.zig +++ b/src/terminal/kitty/graphics_image.zig @@ -241,9 +241,16 @@ pub const LoadingImage = struct { const start_i = self.data.items.len; self.data.items.len = start_i + size; const buf = self.data.items[start_i..]; - Base64Decoder.decode(buf, data) catch |err| { - log.warn("failed to decode base64 data: {}", .{err}); - return error.InvalidData; + Base64Decoder.decode(buf, data) catch |err| switch (err) { + // We have to ignore invalid padding because lots of encoders + // add the wrong padding. Since we validate image data later + // (PNG decode or simple dimensions check), we can ignore this. + error.InvalidPadding => {}, + + else => { + log.warn("failed to decode base64 data: {}", .{err}); + return error.InvalidData; + }, }; }