[Bf-blender-cvs] [3337838b499] master: Fix: retrieved writable attribute but did not write to it
Jacques Lucke
noreply at git.blender.org
Fri Jan 6 13:05:06 CET 2023
Commit: 3337838b4990ab92aca7644f36f5f2273ffb4abe
Author: Jacques Lucke
Date: Fri Jan 6 12:54:08 2023 +0100
Branches: master
https://developer.blender.org/rB3337838b4990ab92aca7644f36f5f2273ffb4abe
Fix: retrieved writable attribute but did not write to it
This caused a warning because `attribute.finish` was not called.
===================================================================
M source/blender/blenkernel/intern/geometry_fields.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/geometry_fields.cc b/source/blender/blenkernel/intern/geometry_fields.cc
index 6fe822d6dc6..9c691cb5870 100644
--- a/source/blender/blenkernel/intern/geometry_fields.cc
+++ b/source/blender/blenkernel/intern/geometry_fields.cc
@@ -433,8 +433,10 @@ bool try_capture_field_on_geometry(GeometryComponent &component,
GMutableSpan{type, buffer, domain_size});
evaluator.evaluate();
- if (GAttributeWriter attribute = attributes.lookup_for_write(attribute_id)) {
- if (attribute.domain == domain && attribute.varray.type() == type) {
+ const std::optional<AttributeMetaData> meta_data = attributes.lookup_meta_data(attribute_id);
+
+ if (meta_data && meta_data->domain == domain && meta_data->data_type == data_type) {
+ if (GAttributeWriter attribute = attributes.lookup_for_write(attribute_id)) {
attribute.varray.set_all(buffer);
attribute.finish();
type.destruct_n(buffer, domain_size);
@@ -442,6 +444,7 @@ bool try_capture_field_on_geometry(GeometryComponent &component,
return true;
}
}
+
attributes.remove(attribute_id);
if (attributes.add(attribute_id, domain, data_type, bke::AttributeInitMoveArray{buffer})) {
return true;
More information about the Bf-blender-cvs
mailing list