diff --git a/src/compiler/nir/nir_opt_large_constants.c b/src/compiler/nir/nir_opt_large_constants.c index fec6cceb325..b1d90be8336 100644 --- a/src/compiler/nir/nir_opt_large_constants.c +++ b/src/compiler/nir/nir_opt_large_constants.c @@ -118,8 +118,11 @@ handle_constant_store(void *mem_ctx, struct var_info *info, info->constant_data = rzalloc_size(mem_ctx, var_size); } - char *dst = (char *)info->constant_data + - nir_deref_instr_get_const_offset(deref, size_align); + const unsigned offset = nir_deref_instr_get_const_offset(deref, size_align); + if (offset >= info->constant_data_size) + return; + + char *dst = (char *)info->constant_data + offset; for (unsigned i = 0; i < num_components; i++) { if (!(writemask & (1 << i)))