Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/dxil.c:
return !parser->failed;
}
+static bool shader_sm6_add_global_abbrev(struct vkd3d_shader_parser *parser) +{
- struct vkd3d_shader_sm6_parser *sm6 = vkd3d_shader_sm6_parser(parser);
- struct vkd3d_shader_sm6_block *block = sm6->current_block;
- struct vkd3d_shader_sm6_global_abbrev *global_abbrev;
- unsigned int count = shader_sm6_read_vbr(parser, 5);
- assert(block->id == 0);
- if (!vkd3d_array_reserve((void **)&sm6->abbrevs, &sm6->abbrev_capacity, sm6->abbrev_count + 1, sizeof(*sm6->abbrevs))
|| !(global_abbrev = vkd3d_malloc(sizeof(*global_abbrev) + count * sizeof(global_abbrev->abbrev.operands[0]))))
Here too `global_abbrev` is leaked on failure paths.