Fix memory leaks found by DebugAllocator.

This commit is contained in:
andrew.kraevskii
2026-03-04 01:46:16 +03:00
parent 045624beac
commit d6c8a062cd
2 changed files with 4 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ pub fn main() !void {
// std.heap.GeneralPurposeAllocator was renamed to DebugAllocator recently. // std.heap.GeneralPurposeAllocator was renamed to DebugAllocator recently.
var gpa: std.heap.DebugAllocator(.{}) = .init; var gpa: std.heap.DebugAllocator(.{}) = .init;
defer _ = gpa.deinit(); defer _ = gpa.deinit();
const allocator = gpa.allocator(); const allocator = gpa.allocator();
var backend = try SDLBackend.initWindow(.{ var backend = try SDLBackend.initWindow(.{

View File

@@ -85,6 +85,7 @@ fn randomizeObjectProperties(allocator: std.mem.Allocator, doc_size: *const Size
y += randFloat(rng, -30, 60); y += randFloat(rng, -30, 60);
} }
const slice = try allocator.dupe(Point2_f, list.items); const slice = try allocator.dupe(Point2_f, list.items);
errdefer allocator.free(slice);
try obj.setProperty(allocator, .{ .data = .{ .points = slice } }); try obj.setProperty(allocator, .{ .data = .{ .points = slice } });
}, },
} }
@@ -99,6 +100,7 @@ pub fn addRandomShapes(doc: *Document, allocator: std.mem.Allocator, rng: std.Ra
for (0..n_root) |_| { for (0..n_root) |_| {
if (total_count >= max_total) break; if (total_count >= max_total) break;
var obj = try shape.createObject(allocator, randomShapeKind(rng)); var obj = try shape.createObject(allocator, randomShapeKind(rng));
defer obj.deinit(allocator);
try randomizeObjectProperties(allocator, &doc.size, &obj, rng); try randomizeObjectProperties(allocator, &doc.size, &obj, rng);
try doc.addObject(allocator, obj); try doc.addObject(allocator, obj);
total_count += 1; total_count += 1;
@@ -116,6 +118,7 @@ pub fn addRandomShapes(doc: *Document, allocator: std.mem.Allocator, rng: std.Ra
for (0..n_children) |_| { for (0..n_children) |_| {
if (total_count >= max_total) break; if (total_count >= max_total) break;
var child = try shape.createObject(allocator, randomShapeKind(rng)); var child = try shape.createObject(allocator, randomShapeKind(rng));
defer child.deinit(allocator);
try randomizeObjectProperties(allocator, &doc.size, &child, rng); try randomizeObjectProperties(allocator, &doc.size, &child, rng);
try obj.addChild(allocator, child, &doc.next_object_id); try obj.addChild(allocator, child, &doc.next_object_id);
total_count += 1; total_count += 1;