diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-09-03 18:26:10 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-09-03 18:26:10 -0400 |
| commit | 42cc4a406bd4d037f4203fa2ebca2853db33c780 (patch) | |
| tree | 993389ab3f52fdb62cf48366cc3fcb92737284b5 /src/ir.cpp | |
| parent | fc0f8d0359777580c771848361166f97a85deddd (diff) | |
| parent | 18620756520d198f581b9a9acbf25c8cbb79ad11 (diff) | |
| download | zig-42cc4a406bd4d037f4203fa2ebca2853db33c780.tar.gz zig-42cc4a406bd4d037f4203fa2ebca2853db33c780.zip | |
Merge branch 'marler8997-fixSegfault'
Diffstat (limited to 'src/ir.cpp')
| -rw-r--r-- | src/ir.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/ir.cpp b/src/ir.cpp index e3b440d0f5..abf4f477a8 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -17464,7 +17464,12 @@ static IrInstruction *ir_analyze_container_field_ptr(IrAnalyze *ira, Buf *field_ return ir_analyze_container_member_access_inner(ira, bare_type, field_name, source_instr, container_ptr, container_type); } - ZigType *ptr_type = get_pointer_to_type_extra(ira->codegen, field->type_entry, + + ZigType *field_type = resolve_union_field_type(ira->codegen, field); + if (field_type == nullptr) + return ira->codegen->invalid_instruction; + + ZigType *ptr_type = get_pointer_to_type_extra(ira->codegen, field_type, is_const, is_volatile, PtrLenSingle, 0, 0, 0, false); if (instr_is_comptime(container_ptr)) { ConstExprValue *ptr_val = ir_resolve_const(ira, container_ptr, UndefBad); @@ -17481,7 +17486,7 @@ static IrInstruction *ir_analyze_container_field_ptr(IrAnalyze *ira, Buf *field_ if (initializing) { ConstExprValue *payload_val = create_const_vals(1); payload_val->special = ConstValSpecialUndef; - payload_val->type = field->type_entry; + payload_val->type = field_type; payload_val->parent.id = ConstParentIdUnion; payload_val->parent.data.p_union.union_val = union_val; |
