From d13cec6894aa01b6a5dbf6a7cf9b071fa9c68666 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 31 Jan 2017 16:04:26 -0500 Subject: fix var args allocating wrong amount of memory in compiler --- src/analyze.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/analyze.cpp') diff --git a/src/analyze.cpp b/src/analyze.cpp index f1f294fdd3..25065e9f88 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -898,7 +898,7 @@ static TypeTableEntry *get_generic_fn_type(CodeGen *g, FnTypeId *fn_type_id) { return fn_type; } -void init_fn_type_id(FnTypeId *fn_type_id, AstNode *proto_node) { +void init_fn_type_id(FnTypeId *fn_type_id, AstNode *proto_node, size_t param_count_alloc) { assert(proto_node->type == NodeTypeFnProto); AstNodeFnProto *fn_proto = &proto_node->data.fn_proto; @@ -906,7 +906,7 @@ void init_fn_type_id(FnTypeId *fn_type_id, AstNode *proto_node) { fn_type_id->is_naked = fn_proto->is_nakedcc; fn_type_id->is_cold = fn_proto->is_coldcc; fn_type_id->param_count = fn_proto->params.length; - fn_type_id->param_info = allocate_nonzero(fn_type_id->param_count); + fn_type_id->param_info = allocate_nonzero(param_count_alloc); fn_type_id->next_param_index = 0; fn_type_id->is_var_args = fn_proto->is_var_args; } @@ -916,7 +916,7 @@ static TypeTableEntry *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *c AstNodeFnProto *fn_proto = &proto_node->data.fn_proto; FnTypeId fn_type_id = {0}; - init_fn_type_id(&fn_type_id, proto_node); + init_fn_type_id(&fn_type_id, proto_node, proto_node->data.fn_proto.params.length); for (; fn_type_id.next_param_index < fn_type_id.param_count; fn_type_id.next_param_index += 1) { AstNode *param_node = fn_proto->params.at(fn_type_id.next_param_index); -- cgit v1.2.3