From 2d334edf96cd04ca44f90b2bc92bf56bb11abf18 Mon Sep 17 00:00:00 2001 From: reugenio Date: Thu, 25 Dec 2025 22:52:55 +0100 Subject: [PATCH] fix(audit): Free previous values in EntryBuilder setters - setTable, setSql, setBefore, setAfter now free old value before setting new - Prevents memory leak if setter is called multiple times on same builder --- src/audit/entry.zig | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/audit/entry.zig b/src/audit/entry.zig index 42aabb7..4c10c82 100644 --- a/src/audit/entry.zig +++ b/src/audit/entry.zig @@ -357,6 +357,8 @@ pub const EntryBuilder = struct { } pub fn setTable(self: *Self, table: []const u8) !*Self { + // Liberar valor anterior si existe (evitar leak si se llama 2 veces) + if (self.table) |t| self.allocator.free(t); self.table = try self.allocator.dupe(u8, table); return self; } @@ -367,16 +369,22 @@ pub const EntryBuilder = struct { } pub fn setSql(self: *Self, sql: []const u8) !*Self { + // Liberar valor anterior si existe + if (self.sql) |s| self.allocator.free(s); self.sql = try self.allocator.dupe(u8, sql); return self; } pub fn setBefore(self: *Self, before: []const u8) !*Self { + // Liberar valor anterior si existe + if (self.before) |b| self.allocator.free(b); self.before = try self.allocator.dupe(u8, before); return self; } pub fn setAfter(self: *Self, after: []const u8) !*Self { + // Liberar valor anterior si existe + if (self.after) |a| self.allocator.free(a); self.after = try self.allocator.dupe(u8, after); return self; }