aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--river/Mapping.zig8
1 files 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,