This commit is contained in:
Thomas Krijnen
2022-10-04 12:38:40 +02:00
parent 1f56b36bfa
commit f68db3d3be
+14 -11
View File
@@ -748,18 +748,21 @@ size_t IfcParse::IfcFile::load(unsigned entity_instance_name, const IfcParse::en
}
if (vector) {
// @todo figure out whether all this logic is still necessary, since we know the
// expected amount of attributes and shouldn't be able to access more than allowed
// by the schema.
attributes = new Argument*[(std::max)(num_attributes, vector->size())]{ nullptr };
// @todo this appears unnecessary, we increment this in the loop already,
// which is more accurate as the filler can't go above it's size in case
// it uses the pre-allocated c-array.
// -> return_value = vector->size();
// Obviously don't try and create a 0-length array.
if (num_attributes || vector->size()) {
// @todo figure out whether all this logic is still necessary, since we know the
// expected amount of attributes and shouldn't be able to access more than allowed
// by the schema.
attributes = new Argument*[(std::max)(num_attributes, vector->size())]{ nullptr };
for (size_t i = 0; i < vector->size(); ++i) {
attributes[i] = vector->at(i);
// @todo this appears unnecessary, we increment this in the loop already,
// which is more accurate as the filler can't go above it's size in case
// it uses the pre-allocated c-array.
// -> return_value = vector->size();
for (size_t i = 0; i < vector->size(); ++i) {
attributes[i] = vector->at(i);
}
}
if ((vector != &internal_attribute_vector_) && (vector != &internal_attribute_vector_simple_type_)) {