Skip to content

Commit b8cd400

Browse files
committed
fix(polkit): 修复 cookie 错乱的问题
1 parent f3c0be6 commit b8cd400

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/lib/polkit.zig

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,17 @@ pub const Agent = struct {
100100
const identities = in.next(DirectionDBus).?;
101101

102102
var ctx: Context = .{
103-
.actionId = actionId,
104-
.message = message,
105-
.iconName = iconName,
106-
.cookie = cookie,
103+
.actionId = try gpa.dupe(u8, actionId),
104+
.message = try gpa.dupe(u8, message),
105+
.iconName = try gpa.dupe(u8, iconName),
106+
.cookie = try gpa.dupe(u8, cookie),
107107
.details = std.StringHashMap([]const u8).init(gpa),
108108
.identities = undefined,
109109
};
110110
errdefer ctx.details.deinit();
111111

112112
for (details) |detail| {
113-
try ctx.details.put(detail.key, detail.value);
113+
try ctx.details.put(try gpa.dupe(u8, detail.key), try gpa.dupe(u8, detail.value));
114114
}
115115
const eql = std.mem.eql;
116116
var identitiesList = std.ArrayList(Identitie){};
@@ -132,6 +132,15 @@ pub const Agent = struct {
132132
return ctx;
133133
}
134134
fn deinit(self: *Context, gpa: Allocator) void {
135+
gpa.free(self.actionId);
136+
gpa.free(self.message);
137+
gpa.free(self.iconName);
138+
gpa.free(self.cookie);
139+
var it = self.details.iterator();
140+
while (it.next()) |entry| {
141+
gpa.free(entry.key_ptr.*);
142+
gpa.free(entry.value_ptr.*);
143+
}
135144
self.details.deinit();
136145
gpa.free(self.identities);
137146
}

0 commit comments

Comments
 (0)