Compare commits

..

2 commits

Author SHA1 Message Date
7097334201 turn on gpa 2020-08-18 21:00:16 -03:00
c2834f8254 properly free Image contents 2020-08-18 21:00:07 -03:00
3 changed files with 14 additions and 5 deletions

View file

@ -179,17 +179,20 @@ pub const Image = struct {
} }
pub fn close(self: *Image) void { pub fn close(self: *Image) void {
self.allocator.free(self.path);
self.allocator.free(self.curpath);
var st: i32 = c.sf_close(self.sndfile); var st: i32 = c.sf_close(self.sndfile);
if (st != 0) { if (st != 0) {
std.debug.warn("Failed to close {} ({})\n", .{ std.debug.warn("Failed to close {} ({})\n", .{
self.path, self.path,
c.sf_error_number(st), c.sf_error_number(st),
}); });
} }
self.allocator.free(self.path);
self.allocator.free(self.curpath);
var allocator = self.allocator;
self.* = undefined;
allocator.destroy(self);
} }
pub fn read(self: *Image, file_chans: c_int, buf: []f32) bool { pub fn read(self: *Image, file_chans: c_int, buf: []f32) bool {

View file

@ -231,7 +231,12 @@ pub fn doRepl(allocator: *std.mem.Allocator, args_it: anytype) !void {
} }
pub fn main() !void { pub fn main() !void {
const allocator = std.heap.page_allocator; // const allocator = std.heap.page_allocator;
var allocator_instance = std.heap.GeneralPurposeAllocator(.{}){};
defer {
_ = allocator_instance.deinit();
}
const allocator = &allocator_instance.allocator;
var lang = langs.Lang.init(allocator); var lang = langs.Lang.init(allocator);
defer lang.deinit(); defer lang.deinit();

View file

@ -108,6 +108,7 @@ pub const Runner = struct {
// we don't copy load_path into a temporary file because we're already // we don't copy load_path into a temporary file because we're already
// loading it under the SFM_READ mode, which won't cause any destructive // loading it under the SFM_READ mode, which won't cause any destructive
// operations on the file. // operations on the file.
if (self.image) |image| image.close();
self.image = try Image.open(self.allocator, load_path); self.image = try Image.open(self.allocator, load_path);
} }