mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 22:35:24 +00:00
tracy: protect source info via global constant
When the code is written this way, you get a compile error if the pointer given to Tracy does not have a static lifetime. This would have caught the regression in #13315.
This commit is contained in:
parent
46a6d50fdf
commit
c01aa26bd3
@ -63,44 +63,40 @@ pub const Ctx = if (enable) ___tracy_c_zone_context else struct {
|
||||
pub inline fn trace(comptime src: std.builtin.SourceLocation) Ctx {
|
||||
if (!enable) return .{};
|
||||
|
||||
const global = struct {
|
||||
const loc: ___tracy_source_location_data = .{
|
||||
.name = null,
|
||||
.function = src.fn_name.ptr,
|
||||
.file = src.file.ptr,
|
||||
.line = src.line,
|
||||
.color = 0,
|
||||
};
|
||||
};
|
||||
|
||||
if (enable_callstack) {
|
||||
return ___tracy_emit_zone_begin_callstack(&.{
|
||||
.name = null,
|
||||
.function = src.fn_name.ptr,
|
||||
.file = src.file.ptr,
|
||||
.line = src.line,
|
||||
.color = 0,
|
||||
}, callstack_depth, 1);
|
||||
return ___tracy_emit_zone_begin_callstack(&global.loc, callstack_depth, 1);
|
||||
} else {
|
||||
return ___tracy_emit_zone_begin(&.{
|
||||
.name = null,
|
||||
.function = src.fn_name.ptr,
|
||||
.file = src.file.ptr,
|
||||
.line = src.line,
|
||||
.color = 0,
|
||||
}, 1);
|
||||
return ___tracy_emit_zone_begin(&global.loc, 1);
|
||||
}
|
||||
}
|
||||
|
||||
pub inline fn traceNamed(comptime src: std.builtin.SourceLocation, comptime name: [:0]const u8) Ctx {
|
||||
if (!enable) return .{};
|
||||
|
||||
const global = struct {
|
||||
const loc: ___tracy_source_location_data = .{
|
||||
.name = name.ptr,
|
||||
.function = src.fn_name.ptr,
|
||||
.file = src.file.ptr,
|
||||
.line = src.line,
|
||||
.color = 0,
|
||||
};
|
||||
};
|
||||
|
||||
if (enable_callstack) {
|
||||
return ___tracy_emit_zone_begin_callstack(&.{
|
||||
.name = name.ptr,
|
||||
.function = src.fn_name.ptr,
|
||||
.file = src.file.ptr,
|
||||
.line = src.line,
|
||||
.color = 0,
|
||||
}, callstack_depth, 1);
|
||||
return ___tracy_emit_zone_begin_callstack(&global.loc, callstack_depth, 1);
|
||||
} else {
|
||||
return ___tracy_emit_zone_begin(&.{
|
||||
.name = name.ptr,
|
||||
.function = src.fn_name.ptr,
|
||||
.file = src.file.ptr,
|
||||
.line = src.line,
|
||||
.color = 0,
|
||||
}, 1);
|
||||
return ___tracy_emit_zone_begin(&global.loc, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user