diff options
| author | nsfisis <nsfisis@gmail.com> | 2023-07-17 15:36:32 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2023-07-17 15:38:13 +0900 |
| commit | 2fe3e2233800267647ea76612954ceb343a535b1 (patch) | |
| tree | a5ab939ea04963f7ae90e734ad606662fd7ffff7 | |
| parent | 29b20f94dead6b80942f7a915ca1b3a3d715229f (diff) | |
| download | RayTracingInOneWeekend.zig-2fe3e2233800267647ea76612954ceb343a535b1.tar.gz RayTracingInOneWeekend.zig-2fe3e2233800267647ea76612954ceb343a535b1.tar.zst RayTracingInOneWeekend.zig-2fe3e2233800267647ea76612954ceb343a535b1.zip | |
fix: fix memory leak
| -rw-r--r-- | src/rtw/hittable.zig | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/src/rtw/hittable.zig b/src/rtw/hittable.zig index a583dd8..8c9f6f0 100644 --- a/src/rtw/hittable.zig +++ b/src/rtw/hittable.zig @@ -17,13 +17,6 @@ const randomReal01 = @import("rand.zig").randomReal01; const randomReal = @import("rand.zig").randomReal; const Material = @import("material.zig").Material; -const DiffuseMaterial = @import("material.zig").DiffuseMaterial; -const MetalMaterial = @import("material.zig").MetalMaterial; -const DielectricMaterial = @import("material.zig").DielectricMaterial; - -const Texture = @import("texture.zig").Texture; -const SolidTexture = @import("texture.zig").SolidTexture; -const CheckerTexture = @import("texture.zig").CheckerTexture; const HitRecord = @import("hit_record.zig").HitRecord; const Aabb = @import("aabb.zig").Aabb; @@ -407,8 +400,7 @@ const XyRect = struct { } pub fn deinit(rect: *const XyRect, allocator: anytype) void { - _ = rect; - _ = allocator; + allocator.destroy(rect.material); } }; @@ -461,8 +453,7 @@ const XzRect = struct { } pub fn deinit(rect: *const XzRect, allocator: anytype) void { - _ = rect; - _ = allocator; + allocator.destroy(rect.material); } }; @@ -515,8 +506,7 @@ const YzRect = struct { } pub fn deinit(rect: *const YzRect, allocator: anytype) void { - _ = rect; - _ = allocator; + allocator.destroy(rect.material); } }; @@ -528,12 +518,23 @@ const Box = struct { pub fn init(p0: Point3, p1: Point3, material: *const Material, allocator: anytype) !Box { var sides = ArrayList(Hittable).init(allocator); + var mat2 = try allocator.create(Material); + var mat3 = try allocator.create(Material); + var mat4 = try allocator.create(Material); + var mat5 = try allocator.create(Material); + var mat6 = try allocator.create(Material); + mat2.* = material.*; + mat3.* = material.*; + mat4.* = material.*; + mat5.* = material.*; + mat6.* = material.*; + try sides.append(.{ .xyRect = .{ .x0 = p0.x, .x1 = p1.x, .y0 = p0.y, .y1 = p1.y, .k = p1.z, .material = material } }); - try sides.append(.{ .xyRect = .{ .x0 = p0.x, .x1 = p1.x, .y0 = p0.y, .y1 = p1.y, .k = p0.z, .material = material } }); - try sides.append(.{ .xzRect = .{ .x0 = p0.x, .x1 = p1.x, .z0 = p0.z, .z1 = p1.z, .k = p1.y, .material = material } }); - try sides.append(.{ .xzRect = .{ .x0 = p0.x, .x1 = p1.x, .z0 = p0.z, .z1 = p1.z, .k = p0.y, .material = material } }); - try sides.append(.{ .yzRect = .{ .y0 = p0.y, .y1 = p1.y, .z0 = p0.z, .z1 = p1.z, .k = p1.x, .material = material } }); - try sides.append(.{ .yzRect = .{ .y0 = p0.y, .y1 = p1.y, .z0 = p0.z, .z1 = p1.z, .k = p0.x, .material = material } }); + try sides.append(.{ .xyRect = .{ .x0 = p0.x, .x1 = p1.x, .y0 = p0.y, .y1 = p1.y, .k = p0.z, .material = mat2 } }); + try sides.append(.{ .xzRect = .{ .x0 = p0.x, .x1 = p1.x, .z0 = p0.z, .z1 = p1.z, .k = p1.y, .material = mat3 } }); + try sides.append(.{ .xzRect = .{ .x0 = p0.x, .x1 = p1.x, .z0 = p0.z, .z1 = p1.z, .k = p0.y, .material = mat4 } }); + try sides.append(.{ .yzRect = .{ .y0 = p0.y, .y1 = p1.y, .z0 = p0.z, .z1 = p1.z, .k = p1.x, .material = mat5 } }); + try sides.append(.{ .yzRect = .{ .y0 = p0.y, .y1 = p1.y, .z0 = p0.z, .z1 = p1.z, .k = p0.x, .material = mat6 } }); return .{ .min = p0, |
