config: need to dupe filepath for diagnostics

Fixes #2800

The source string with the filepath is not guaranteed to exist beyond
the lifetime of the parse operation. We must copy it.
This commit is contained in:
Mitchell Hashimoto
2024-11-27 08:46:03 -08:00
parent 466d094c18
commit 5b01cb353d
3 changed files with 11 additions and 8 deletions

View File

@@ -56,7 +56,7 @@ pub const Location = union(enum) {
pub const Key = @typeInfo(Location).Union.tag_type.?;
pub fn fromIter(iter: anytype) Location {
pub fn fromIter(iter: anytype, alloc: Allocator) Allocator.Error!Location {
const Iter = t: {
const T = @TypeOf(iter);
break :t switch (@typeInfo(T)) {
@@ -67,7 +67,7 @@ pub const Location = union(enum) {
};
if (!@hasDecl(Iter, "location")) return .none;
return iter.location() orelse .none;
return (try iter.location(alloc)) orelse .none;
}
pub fn clone(self: *const Location, alloc: Allocator) Allocator.Error!Location {