Fix Cycles crash in Windows debug mode with volumes

This commit is contained in:
Brecht Van Lommel 2020-03-19 19:50:34 +01:00
parent 12b621059a
commit 4b74b35322
3 changed files with 8 additions and 1 deletions

View File

@ -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();
}

View File

@ -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);

View File

@ -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()