Fix memory leaks found by DebugAllocator.
This commit is contained in:
@@ -8,6 +8,7 @@ pub fn main() !void {
|
||||
// std.heap.GeneralPurposeAllocator was renamed to DebugAllocator recently.
|
||||
var gpa: std.heap.DebugAllocator(.{}) = .init;
|
||||
defer _ = gpa.deinit();
|
||||
|
||||
const allocator = gpa.allocator();
|
||||
|
||||
var backend = try SDLBackend.initWindow(.{
|
||||
|
||||
@@ -85,6 +85,7 @@ fn randomizeObjectProperties(allocator: std.mem.Allocator, doc_size: *const Size
|
||||
y += randFloat(rng, -30, 60);
|
||||
}
|
||||
const slice = try allocator.dupe(Point2_f, list.items);
|
||||
errdefer allocator.free(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) |_| {
|
||||
if (total_count >= max_total) break;
|
||||
var obj = try shape.createObject(allocator, randomShapeKind(rng));
|
||||
defer obj.deinit(allocator);
|
||||
try randomizeObjectProperties(allocator, &doc.size, &obj, rng);
|
||||
try doc.addObject(allocator, obj);
|
||||
total_count += 1;
|
||||
@@ -116,6 +118,7 @@ pub fn addRandomShapes(doc: *Document, allocator: std.mem.Allocator, rng: std.Ra
|
||||
for (0..n_children) |_| {
|
||||
if (total_count >= max_total) break;
|
||||
var child = try shape.createObject(allocator, randomShapeKind(rng));
|
||||
defer child.deinit(allocator);
|
||||
try randomizeObjectProperties(allocator, &doc.size, &child, rng);
|
||||
try obj.addChild(allocator, child, &doc.next_object_id);
|
||||
total_count += 1;
|
||||
|
||||
Reference in New Issue
Block a user