aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-14 17:50:16 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-14 17:53:15 -0800
commit4ba97c7687ec7d6dc2176f37044ae35770180f17 (patch)
tree6d23d763756452e29b6059e7c120093276d50116 /src
parent3df5843503b65f327906b71e340f89dbabd71e40 (diff)
downloadbun-4ba97c7687ec7d6dc2176f37044ae35770180f17.tar.gz
bun-4ba97c7687ec7d6dc2176f37044ae35770180f17.tar.zst
bun-4ba97c7687ec7d6dc2176f37044ae35770180f17.zip
Prevent double-frees in log msgs
Diffstat (limited to '')
-rw-r--r--src/logger.zig19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/logger.zig b/src/logger.zig
index df3095e23..439b27707 100644
--- a/src/logger.zig
+++ b/src/logger.zig
@@ -629,6 +629,13 @@ pub const Log = struct {
map.set(Level.err, "error");
break :brk map;
};
+ pub const Map = bun.ComptimeStringMap(Level, .{
+ .{ "verbose", Level.verbose },
+ .{ "debug", Level.debug },
+ .{ "info", Level.info },
+ .{ "warn", Level.warn },
+ .{ "error", Level.err },
+ });
};
pub fn init(allocator: std.mem.Allocator) Log {
@@ -714,12 +721,12 @@ pub const Log = struct {
self.msgs.deinit();
}
- pub fn appendToMaybeRecycled(self: *Log, other: *Log, source: *const Source) !void {
+ pub fn appendToWithRecycled(self: *Log, other: *Log, recycled: bool) !void {
try other.msgs.appendSlice(self.msgs.items);
other.warnings += self.warnings;
other.errors += self.errors;
- if (source.contents_is_recycled) {
+ if (recycled) {
var string_builder = StringBuilder{};
var notes_count: usize = 0;
{
@@ -758,11 +765,15 @@ pub const Log = struct {
}
}
- self.msgs.deinit();
+ self.msgs.clearAndFree();
+ }
+
+ pub fn appendToMaybeRecycled(self: *Log, other: *Log, source: *const Source) !void {
+ return self.appendToWithRecycled(other, source.contents_is_recycled);
}
pub fn deinit(self: *Log) void {
- self.msgs.deinit();
+ self.msgs.clearAndFree();
}
pub fn addVerboseWithNotes(log: *Log, source: ?*const Source, loc: Loc, text: string, notes: []Data) !void {