浏览代码

Clear RIDs of weight buffers when freeing to avoid double free

(cherry picked from commit bafbde9f4ba00f3d4b7cee2fd5456191294ba174)
clayjohn 1 年之前
父节点
当前提交
4cffca7fbc
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      servers/rendering/renderer_rd/storage_rd/render_scene_buffers_rd.cpp

+ 2 - 1
servers/rendering/renderer_rd/storage_rd/render_scene_buffers_rd.cpp

@@ -127,9 +127,10 @@ void RenderSceneBuffersRD::cleanup() {
 	named_textures.clear();
 	named_textures.clear();
 
 
 	// Clear weight_buffer / blur textures.
 	// Clear weight_buffer / blur textures.
-	for (const WeightBuffers &weight_buffer : weight_buffers) {
+	for (WeightBuffers &weight_buffer : weight_buffers) {
 		if (weight_buffer.weight.is_valid()) {
 		if (weight_buffer.weight.is_valid()) {
 			RD::get_singleton()->free(weight_buffer.weight);
 			RD::get_singleton()->free(weight_buffer.weight);
+			weight_buffer.weight = RID();
 		}
 		}
 	}
 	}
 }
 }