diff --git a/.pick_status.json b/.pick_status.json index e91b58f67f7..e4c65a75312 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -301,7 +301,7 @@ "description": "mesa: Fix zeroing of new ParameterValues array entries when growing", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/mesa/program/prog_parameter.c b/src/mesa/program/prog_parameter.c index 2021d900a7f..53ddf35cad0 100644 --- a/src/mesa/program/prog_parameter.c +++ b/src/mesa/program/prog_parameter.c @@ -222,7 +222,6 @@ _mesa_reserve_parameter_storage(struct gl_program_parameter_list *paramList, } if (needSizeValues > paramList->SizeValues) { - unsigned oldSize = paramList->SizeValues; paramList->SizeValues = needSizeValues + 16; /* alloc some extra */ paramList->ParameterValues = (gl_constant_value *) @@ -235,8 +234,8 @@ _mesa_reserve_parameter_storage(struct gl_program_parameter_list *paramList, paramList->SizeValues * sizeof(gl_constant_value) + 12, 16); /* The values are written to the shader cache, so clear them. */ - memset(paramList->ParameterValues + oldSize, 0, - (paramList->SizeValues - oldSize) * sizeof(gl_constant_value)); + memset(paramList->ParameterValues + oldValNum, 0, + (paramList->SizeValues - oldValNum) * sizeof(gl_constant_value)); } } @@ -303,6 +302,7 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList, memset(¶mList->Parameters[oldNum], 0, sizeof(struct gl_program_parameter)); + memset(¶mList->ParameterValues[oldValNum], 0, padded_size); struct gl_program_parameter *p = paramList->Parameters + oldNum; p->Name = strdup(name ? name : "");