mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-04-01 18:06:46 +00:00
percent encode version query string for crash report
This commit is contained in:
@@ -46,8 +46,12 @@ pub fn build(b: *Build) !void {
|
|||||||
var stdout = std.fs.File.stdout().writer(&.{});
|
var stdout = std.fs.File.stdout().writer(&.{});
|
||||||
try stdout.interface.print("Lightpanda {f}\n", .{version});
|
try stdout.interface.print("Lightpanda {f}\n", .{version});
|
||||||
|
|
||||||
|
const version_string = b.fmt("{f}", .{version});
|
||||||
|
const version_encoded = std.mem.replaceOwned(u8, b.allocator, version_string, "+", "%2B") catch @panic("OOM");
|
||||||
|
|
||||||
var opts = b.addOptions();
|
var opts = b.addOptions();
|
||||||
opts.addOption([]const u8, "version", b.fmt("{f}", .{version}));
|
opts.addOption([]const u8, "version", version_string);
|
||||||
|
opts.addOption([]const u8, "version_encoded", version_encoded);
|
||||||
opts.addOption(?[]const u8, "snapshot_path", snapshot_path);
|
opts.addOption(?[]const u8, "snapshot_path", snapshot_path);
|
||||||
|
|
||||||
const enable_tsan = b.option(bool, "tsan", "Enable Thread Sanitizer") orelse false;
|
const enable_tsan = b.option(bool, "tsan", "Enable Thread Sanitizer") orelse false;
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ pub noinline fn crash(
|
|||||||
writer.print("\nreason: {s}\n", .{reason}) catch abort();
|
writer.print("\nreason: {s}\n", .{reason}) catch abort();
|
||||||
writer.print("OS: {s}\n", .{@tagName(builtin.os.tag)}) catch abort();
|
writer.print("OS: {s}\n", .{@tagName(builtin.os.tag)}) catch abort();
|
||||||
writer.print("mode: {s}\n", .{@tagName(builtin.mode)}) catch abort();
|
writer.print("mode: {s}\n", .{@tagName(builtin.mode)}) catch abort();
|
||||||
writer.print("version: {s}\n", .{lp.build_config.version}) catch abort();
|
writer.print("version: {s}\n", .{lp.build_config.version_encoded}) catch abort();
|
||||||
inline for (@typeInfo(@TypeOf(args)).@"struct".fields) |f| {
|
inline for (@typeInfo(@TypeOf(args)).@"struct".fields) |f| {
|
||||||
writer.writeAll(f.name ++ ": ") catch break;
|
writer.writeAll(f.name ++ ": ") catch break;
|
||||||
@import("log.zig").writeValue(.pretty, @field(args, f.name), writer) catch abort();
|
@import("log.zig").writeValue(.pretty, @field(args, f.name), writer) catch abort();
|
||||||
@@ -86,7 +86,15 @@ fn report(reason: []const u8, begin_addr: usize, args: anytype) !void {
|
|||||||
var url_buffer: [4096]u8 = undefined;
|
var url_buffer: [4096]u8 = undefined;
|
||||||
const url = blk: {
|
const url = blk: {
|
||||||
var writer: std.Io.Writer = .fixed(&url_buffer);
|
var writer: std.Io.Writer = .fixed(&url_buffer);
|
||||||
try writer.print("https://crash.lightpanda.io/c?v={s}&r=", .{lp.build_config.version});
|
try writer.writeAll("https://crash.lightpanda.io/c?v=");
|
||||||
|
for (lp.build_config.version) |b| {
|
||||||
|
if (b == '+') {
|
||||||
|
try writer.writeAll("%2B");
|
||||||
|
} else {
|
||||||
|
try writer.writeByte(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try writer.writeAll("&r=");
|
||||||
for (reason) |b| {
|
for (reason) |b| {
|
||||||
switch (b) {
|
switch (b) {
|
||||||
'A'...'Z', 'a'...'z', '0'...'9', '-', '.', '_' => try writer.writeByte(b),
|
'A'...'Z', 'a'...'z', '0'...'9', '-', '.', '_' => try writer.writeByte(b),
|
||||||
|
|||||||
Reference in New Issue
Block a user