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.
|
// 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(.{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user