diff --git a/src/image.zig b/src/image.zig index 17a545d..28ca2ba 100644 --- a/src/image.zig +++ b/src/image.zig @@ -5,11 +5,11 @@ const custom = @import("custom.zig"); const plugins = @import("plugin.zig"); -/// Approximate size of the BMP header. +/// Approximate size of the BMP header, in bytes. pub const BMPHeaderSize: usize = 82000; -/// Buffer size for main copying -pub const BufferSize: usize = 60000; +/// Buffer size for main image copying. +pub const BufferSize: usize = 300000; pub const ImageError = error{ OpenFail, @@ -176,6 +176,7 @@ pub const Image = struct { return n_read == 1; } + /// Copy bytes from the current file to out_file. fn copyBytes( self: *Image, out_file: *c.SNDFILE, diff --git a/src/plugin.zig b/src/plugin.zig index 4612523..c403eb7 100644 --- a/src/plugin.zig +++ b/src/plugin.zig @@ -95,6 +95,8 @@ pub const RunContext = struct { plugin: *const c.LilvPlugin, ) !RunContext { var instance = c.lilv_plugin_instantiate(plugin, f64(44100), null); + errdefer c.lilv_instance_free(instance); + if (instance == null) { return ImageError.InstantiateFail; } @@ -139,13 +141,17 @@ pub const RunContext = struct { pub fn makeContext(allocator: *std.mem.Allocator, plugin_uri: []const u8) !Context { const cstr_plugin_uri = try std.cstr.addNullByte(allocator, plugin_uri); - var world = c.lilv_world_new().?; + + var world: *c.LilvWorld = c.lilv_world_new().?; + errdefer c.lilv_world_free(world); c.lilv_world_load_all(world); + var uri: *c.LilvNode = c.lilv_new_uri(world, cstr_plugin_uri.ptr) orelse blk: { std.debug.warn("Invalid plugin URI <{}>\n", plugin_uri); return ImageError.InvalidPlugin; }; + defer c.lilv_node_free(uri); const plugins: *const c.LilvPlugins = c.lilv_world_get_all_plugins(world); @@ -154,7 +160,9 @@ pub fn makeContext(allocator: *std.mem.Allocator, plugin_uri: []const u8) !Conte return ImageError.UnknownPlugin; }; - c.lilv_node_free(uri); - - return Context{ .allocator = allocator, .world = world, .plugin = plugin }; + return Context{ + .allocator = allocator, + .world = world, + .plugin = plugin, + }; }