From 4a334829f39c840aa11d60299fc5098bfa949bd6 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Fri, 21 Aug 2020 20:06:26 +0200 Subject: [PATCH] config: handle alloc failure in Mapping init --- river/Mapping.zig | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/river/Mapping.zig b/river/Mapping.zig index 61df624..3d80624 100644 --- a/river/Mapping.zig +++ b/river/Mapping.zig @@ -31,8 +31,12 @@ pub fn init( modifiers: u32, command_args: []const []const u8, ) !Self { - var owned_args = try allocator.alloc([]u8, command_args.len); - for (command_args) |arg, i| owned_args[i] = try std.mem.dupe(allocator, u8, arg); + const owned_args = try allocator.alloc([]u8, command_args.len); + errdefer allocator.free(owned_args); + for (command_args) |arg, i| { + errdefer for (owned_args[0..i]) |a| allocator.free(a); + owned_args[i] = try std.mem.dupe(allocator, u8, arg); + } return Self{ .keysym = keysym, .modifiers = modifiers,