diff options
| author | Robby Zambito <contact@robbyzambito.me> | 2026-01-03 02:32:27 +0000 |
|---|---|---|
| committer | Robby Zambito <contact@robbyzambito.me> | 2026-01-03 02:33:12 +0000 |
| commit | f99b44fdb2309fc29c0a880c6916d90fb0040ffe (patch) | |
| tree | d2b4e8b137cae3dce2423aaf7be700557614922a /src/server | |
| parent | 5a7d3caf9cc4edace0176661102656adbf22f7be (diff) | |
Fix double free
was freeing the wrong element before.
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/main.zig | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/main.zig b/src/server/main.zig index 92ac671..0d90e55 100644 --- a/src/server/main.zig +++ b/src/server/main.zig @@ -133,7 +133,9 @@ fn handleConnectionInfallible( id: usize, stream: std.Io.net.Stream, ) void { - handleConnection(server, server_allocator, io, id, stream) catch {}; + handleConnection(server, server_allocator, io, id, stream) catch |err| { + std.log.err("Failed processing client {d}: {any}", .{ id, err }); + }; } fn handleConnection( @@ -322,8 +324,9 @@ fn unsubscribe(server: *Server, io: std.Io, gpa: std.mem.Allocator, id: usize, m try server.subs_lock.lock(io); defer server.subs_lock.unlock(io); const len = server.subscriptions.items.len; - for (0..len) |i| { - const sub = server.subscriptions.items[len - i - 1]; + for (0..len) |from_end| { + const i = len - from_end - 1; + const sub = server.subscriptions.items[i]; if (sub.client_id == id and std.mem.eql(u8, sub.sid, msg.sid)) { gpa.free(sub.sid); gpa.free(sub.subject); |
