diff options
| author | s-ol <s+removethis@s-ol.nu> | 2026-04-13 22:03:13 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2026-04-13 22:03:13 +0000 |
| commit | c34acd9b1da2294e3cbdedd95d6b6608809a084b (patch) | |
| tree | 2216bae06c2e7495ecfad33c433a5827fa8624af /src | |
| parent | add some tests (diff) | |
| download | glsl-view-c34acd9b1da2294e3cbdedd95d6b6608809a084b.tar.gz glsl-view-c34acd9b1da2294e3cbdedd95d6b6608809a084b.zip | |
fix some memory leaks
Diffstat (limited to 'src')
| -rw-r--r-- | src/control.zig | 10 | ||||
| -rw-r--r-- | src/ffmpeg.zig | 2 | ||||
| -rw-r--r-- | src/gl.zig | 6 | ||||
| -rw-r--r-- | src/main.zig | 2 |
4 files changed, 10 insertions, 10 deletions
diff --git a/src/control.zig b/src/control.zig index e52129e..98fa5a7 100644 --- a/src/control.zig +++ b/src/control.zig @@ -166,7 +166,7 @@ pub const ControlServer = struct { if (remove) { std.debug.print("delete source {s}\n", .{entry.key_ptr.*}); - entry.value_ptr.*.deinit(self.allocator); + entry.value_ptr.*.deinit(self.cache.allocator); names[i] = entry.key_ptr.*; i += 1; } @@ -174,19 +174,19 @@ pub const ControlServer = struct { for (names[0..i]) |name| { _ = self.sources.remove(name); - self.allocator.free(name); + self.cache.allocator.free(name); } while (c.lo_server_recv_noblock(self.server, 0) > 0) {} } - pub fn destroy(self: *ControlServer) void { + pub fn deinit(self: *ControlServer) void { c.lo_server_free(self.server); var tit = self.sources.iterator(); while (tit.next()) |entry| { - entry.value_ptr.*.deinit(self.allocator); - self.allocator.free(entry.key_ptr.*); + entry.value_ptr.*.deinit(self.cache.allocator); + self.cache.allocator.free(entry.key_ptr.*); } self.sources.deinit(); } diff --git a/src/ffmpeg.zig b/src/ffmpeg.zig index af742b2..0345235 100644 --- a/src/ffmpeg.zig +++ b/src/ffmpeg.zig @@ -346,7 +346,7 @@ pub const VideoSource = struct { try @import("hap.zig").HAPDecoder.init(allocator, format, video_stream) else try AVDecoder.init(allocator, format, video_stream); - errdefer decoder.deinit(allocator); + defer decoder.deinit(allocator); self.* = .{ .source = .{ @@ -1107,12 +1107,12 @@ pub const UniformCache = struct { pub fn get(self: *UniformCache, name: []const u8) !?*CachedUniform { if (!self.uniforms.contains(name)) { - const cloned_name = try self.allocator.dupe(u8, name); - errdefer self.allocator.free(cloned_name); - var uniform = CachedUniform.init(self.allocator, self.shader.*, name) catch return null; errdefer uniform.deinit(self.allocator); + const cloned_name = try self.allocator.dupe(u8, name); + errdefer self.allocator.free(cloned_name); + try self.uniforms.put(cloned_name, uniform); } diff --git a/src/main.zig b/src/main.zig index f64c385..9b09945 100644 --- a/src/main.zig +++ b/src/main.zig @@ -116,7 +116,7 @@ pub fn main() !void { defer cache.deinit(); const control = try ctrl.ControlServer.init(cfg_allocator, progress, &cache, &config, &constants); - defer control.destroy(); + defer control.deinit(); var loops: u8 = 0; |
