The vertex data wasn't getting properly freed, it was actually setting the parameter itself to null for some reason.
@@ -169,6 +169,8 @@ static inline D3D11_PRIMITIVE_TOPOLOGY ConvertGSTopology(gs_draw_mode mode)
struct VBDataPtr {
vb_data *data;
+ inline void Clear() {vbdata_destroy(data); data = nullptr;}
+
inline VBDataPtr(vb_data *data) : data(data) {}
inline ~VBDataPtr() {vbdata_destroy(data);}
};
@@ -136,8 +136,6 @@ gs_vertex_buffer::gs_vertex_buffer(device_t device, struct vb_data *data,
uvSizes.push_back(tverts->width * sizeof(float));
}
- if (!dynamic) {
- bfree(data);
- data = NULL;
- }
+ if (!dynamic)
+ vbd.Clear();