[Bf-blender-cvs] [4b74b35322f] master: Fix Cycles crash in Windows debug mode with volumes
Brecht Van Lommel
noreply at git.blender.org
Thu Mar 19 20:27:33 CET 2020
Commit: 4b74b35322f247ce75251e941cfed6610a0477e8
Author: Brecht Van Lommel
Date: Thu Mar 19 19:50:34 2020 +0100
Branches: master
https://developer.blender.org/rB4b74b35322f247ce75251e941cfed6610a0477e8
Fix Cycles crash in Windows debug mode with volumes
===================================================================
M intern/cycles/render/attribute.cpp
M intern/cycles/render/attribute.h
M intern/cycles/render/image.cpp
===================================================================
diff --git a/intern/cycles/render/attribute.cpp b/intern/cycles/render/attribute.cpp
index a3d3c1c2bda..4c26d5e8365 100644
--- a/intern/cycles/render/attribute.cpp
+++ b/intern/cycles/render/attribute.cpp
@@ -48,7 +48,7 @@ Attribute::Attribute(
Attribute::~Attribute()
{
/* For voxel data, we need to free the image handle. */
- if (element == ATTR_ELEMENT_VOXEL) {
+ if (element == ATTR_ELEMENT_VOXEL && buffer.size()) {
ImageHandle &handle = data_voxel();
handle.~ImageHandle();
}
diff --git a/intern/cycles/render/attribute.h b/intern/cycles/render/attribute.h
index 351357a7f7a..5871fa04a31 100644
--- a/intern/cycles/render/attribute.h
+++ b/intern/cycles/render/attribute.h
@@ -59,7 +59,11 @@ class Attribute {
AttributeElement element,
Geometry *geom,
AttributePrimitive prim);
+ Attribute(Attribute &&other) = default;
+ Attribute(const Attribute &other) = delete;
+ Attribute &operator=(const Attribute &other) = delete;
~Attribute();
+
void set(ustring name, TypeDesc type, AttributeElement element);
void resize(Geometry *geom, AttributePrimitive prim, bool reserve_only);
void resize(size_t num_elements);
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 40fdf4b4119..67ed1176171 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -119,6 +119,9 @@ void ImageHandle::clear()
foreach (const int slot, tile_slots) {
manager->remove_image_user(slot);
}
+
+ tile_slots.clear();
+ manager = NULL;
}
bool ImageHandle::empty()
More information about the Bf-blender-cvs
mailing list