mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
std.json: fix parsing of structs with default value const pointers
This commit is contained in:
parent
c1f71963a9
commit
73c857415e
@ -1639,7 +1639,7 @@ fn parseInternal(
|
|||||||
const allocator = options.allocator orelse return error.AllocatorRequired;
|
const allocator = options.allocator orelse return error.AllocatorRequired;
|
||||||
switch (ptrInfo.size) {
|
switch (ptrInfo.size) {
|
||||||
.One => {
|
.One => {
|
||||||
const r: T = try allocator.create(ptrInfo.child);
|
const r: *ptrInfo.child = try allocator.create(ptrInfo.child);
|
||||||
errdefer allocator.destroy(r);
|
errdefer allocator.destroy(r);
|
||||||
r.* = try parseInternal(ptrInfo.child, token, tokens, options);
|
r.* = try parseInternal(ptrInfo.child, token, tokens, options);
|
||||||
return r;
|
return r;
|
||||||
|
|||||||
@ -2238,6 +2238,14 @@ test "parse into struct with no fields" {
|
|||||||
try testing.expectEqual(T{}, try parse(T, &ts, ParseOptions{}));
|
try testing.expectEqual(T{}, try parse(T, &ts, ParseOptions{}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const test_const_value: usize = 123;
|
||||||
|
|
||||||
|
test "parse into struct with default const pointer field" {
|
||||||
|
const T = struct { a: *const usize = &test_const_value };
|
||||||
|
var ts = TokenStream.init("{}");
|
||||||
|
try testing.expectEqual(T{}, try parse(T, &ts, .{}));
|
||||||
|
}
|
||||||
|
|
||||||
test "parse into struct where destination and source lengths mismatch" {
|
test "parse into struct where destination and source lengths mismatch" {
|
||||||
const T = struct { a: [2]u8 };
|
const T = struct { a: [2]u8 };
|
||||||
var ts = TokenStream.init("{\"a\": \"bbb\"}");
|
var ts = TokenStream.init("{\"a\": \"bbb\"}");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user