Mem fixes
* `gpa.deinit()` now returns an enum * avoid double free when `--config-path` is specified * avoid leaking memory in `Server.create` if `configChanged` returns err
This commit is contained in:
parent
825cbd2e07
commit
5519b3a2c0
@ -7,7 +7,7 @@ const zls_version = std.builtin.Version{ .major = 0, .minor = 11, .patch = 0 };
|
|||||||
pub fn build(b: *std.build.Builder) !void {
|
pub fn build(b: *std.build.Builder) !void {
|
||||||
comptime {
|
comptime {
|
||||||
const current_zig = builtin.zig_version;
|
const current_zig = builtin.zig_version;
|
||||||
const min_zig = std.SemanticVersion.parse("0.11.0-dev.2571+31738de28") catch unreachable; // add c_char - https://github.com/ziglang/zig/pull/15263
|
const min_zig = std.SemanticVersion.parse("0.11.0-dev.2730+bd801dc48") catch unreachable; // gpa.deinit() now returns an enum
|
||||||
if (current_zig.order(min_zig) == .lt) {
|
if (current_zig.order(min_zig) == .lt) {
|
||||||
@compileError(std.fmt.comptimePrint("Your Zig version v{} does not meet the minimum build requirement of v{}", .{ current_zig, min_zig }));
|
@compileError(std.fmt.comptimePrint("Your Zig version v{} does not meet the minimum build requirement of v{}", .{ current_zig, min_zig }));
|
||||||
}
|
}
|
||||||
|
@ -1549,6 +1549,7 @@ pub fn create(
|
|||||||
message_tracing_enabled: bool,
|
message_tracing_enabled: bool,
|
||||||
) !*Server {
|
) !*Server {
|
||||||
const server = try allocator.create(Server);
|
const server = try allocator.create(Server);
|
||||||
|
errdefer server.destroy();
|
||||||
server.* = Server{
|
server.* = Server{
|
||||||
.config = config,
|
.config = config,
|
||||||
.runtime_zig_version = null,
|
.runtime_zig_version = null,
|
||||||
|
@ -164,7 +164,7 @@ fn getConfig(
|
|||||||
) !ConfigWithPath {
|
) !ConfigWithPath {
|
||||||
if (config_path) |path| {
|
if (config_path) |path| {
|
||||||
if (configuration.loadFromFile(allocator, path)) |config| {
|
if (configuration.loadFromFile(allocator, path)) |config| {
|
||||||
return ConfigWithPath{ .config = config, .config_path = path };
|
return ConfigWithPath{ .config = config, .config_path = try allocator.dupe(u8, path) };
|
||||||
}
|
}
|
||||||
std.debug.print(
|
std.debug.print(
|
||||||
\\Could not open configuration file '{s}'
|
\\Could not open configuration file '{s}'
|
||||||
@ -357,7 +357,7 @@ const stack_frames = switch (zig_builtin.mode) {
|
|||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
var gpa_state = std.heap.GeneralPurposeAllocator(.{ .stack_trace_frames = stack_frames }){};
|
var gpa_state = std.heap.GeneralPurposeAllocator(.{ .stack_trace_frames = stack_frames }){};
|
||||||
defer std.debug.assert(!gpa_state.deinit());
|
defer std.debug.assert(gpa_state.deinit() == .ok);
|
||||||
|
|
||||||
var tracy_state = if (tracy.enable_allocation) tracy.tracyAllocator(gpa_state.allocator()) else void{};
|
var tracy_state = if (tracy.enable_allocation) tracy.tracyAllocator(gpa_state.allocator()) else void{};
|
||||||
const inner_allocator: std.mem.Allocator = if (tracy.enable_allocation) tracy_state.allocator() else gpa_state.allocator();
|
const inner_allocator: std.mem.Allocator = if (tracy.enable_allocation) tracy_state.allocator() else gpa_state.allocator();
|
||||||
|
Loading…
Reference in New Issue
Block a user