Giovanni Mascellani (@giomasce) commented about include/vkd3d_shader.h:
*/ VKD3D_SHADER_API void vkd3d_shader_set_log_callback(PFN_vkd3d_log callback);
+/** + * Free the contents of a vkd3d_shader_dxbc_desc structure allocated by + * another vkd3d-shader function, such as vkd3d_shader_parse_dxbc(). + * + * This function may free the \ref vkd3d_shader_dxbc_desc.sections member, but + * does not free the structure itself. + * + * \param dxbc The vkd3d_shader_dxbc_desc structure to free. + * + * \since 1.7 + */ +VKD3D_SHADER_API void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc); My understanding is that `free` usually means that the pointer itself is freed. Maybe this should be renamed to `destroy`?
Though I notice that this problem is also with `vkd3d_shader_free_shader_code()`, so maybe that's a ship that has already sailed. -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/103#note_25158