diff options
| author | LemonBoy <thatlemon@gmail.com> | 2020-02-05 20:31:18 +0100 |
|---|---|---|
| committer | LemonBoy <thatlemon@gmail.com> | 2020-02-05 20:31:18 +0100 |
| commit | 21932a0ef25a7055cd3c0850fa58c2fda2ba383b (patch) | |
| tree | bc154b72c1162381e4d0b560b43e68507b442997 /src/ir.cpp | |
| parent | b022db16ece48f2cdec47c5716601fec2fc07ef4 (diff) | |
| download | zig-21932a0ef25a7055cd3c0850fa58c2fda2ba383b.tar.gz zig-21932a0ef25a7055cd3c0850fa58c2fda2ba383b.zip | |
Fix edge case in cast between fn with varargs
* Prevent the next_param_index to become greater than the param_count
one as it's expected by every other function.
* Fix a typo in a error message.
Closes #4381
Diffstat (limited to 'src/ir.cpp')
| -rw-r--r-- | src/ir.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ir.cpp b/src/ir.cpp index ef3426d111..0687d18ef2 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -11864,7 +11864,7 @@ static ConstCastOnly types_match_const_cast_only(IrAnalyze *ira, ZigType *wanted } assert(wanted_type->data.fn.is_generic || wanted_type->data.fn.fn_type_id.next_param_index == wanted_type->data.fn.fn_type_id.param_count); - for (size_t i = 0; i < wanted_type->data.fn.fn_type_id.next_param_index; i += 1) { + for (size_t i = 0; i < wanted_type->data.fn.fn_type_id.param_count; i += 1) { // note it's reversed for parameters FnTypeParamInfo *actual_param_info = &actual_type->data.fn.fn_type_id.param_info[i]; FnTypeParamInfo *expected_param_info = &wanted_type->data.fn.fn_type_id.param_info[i]; @@ -30285,7 +30285,7 @@ static ZigType *ir_resolve_lazy_fn_type(IrAnalyze *ira, AstNode *source_node, La if (param_is_var_args) { if (fn_type_id.cc == CallingConventionC) { fn_type_id.param_count = fn_type_id.next_param_index; - continue; + break; } else if (fn_type_id.cc == CallingConventionUnspecified) { return get_generic_fn_type(ira->codegen, &fn_type_id); } else { |
