[Bf-blender-cvs] [d944146ebe5] functions: fix stack use out of scope error
Jacques Lucke
noreply at git.blender.org
Sun Feb 2 14:27:14 CET 2020
Commit: d944146ebe53015f260296cc30021c218394ef08
Author: Jacques Lucke
Date: Sun Feb 2 12:26:37 2020 +0100
Branches: functions
https://developer.blender.org/rBd944146ebe53015f260296cc30021c218394ef08
fix stack use out of scope error
===================================================================
M source/blender/simulations/bparticles/particle_action.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/particle_action.cpp b/source/blender/simulations/bparticles/particle_action.cpp
index 800dbeffc62..9db3a914b9f 100644
--- a/source/blender/simulations/bparticles/particle_action.cpp
+++ b/source/blender/simulations/bparticles/particle_action.cpp
@@ -16,6 +16,7 @@ void ParticleAction::execute_from_emitter(AttributesRefGroup &new_particles,
EmitterInterface &emitter_interface)
{
BufferCache buffer_cache;
+ std::array<BLI::class_id_t, 1> context_ids = {BLI::get_class_id<ParticleCurrentTimesContext>()};
for (MutableAttributesRef attributes : new_particles) {
ParticleCurrentTimesContext current_times_context;
@@ -25,7 +26,7 @@ void ParticleAction::execute_from_emitter(AttributesRefGroup &new_particles,
IndexMask(attributes.size()),
attributes,
buffer_cache,
- {BLI::get_class_id<ParticleCurrentTimesContext>()},
+ context_ids,
{(void *)¤t_times_context});
this->execute(context);
}
@@ -34,6 +35,7 @@ void ParticleAction::execute_from_emitter(AttributesRefGroup &new_particles,
void ParticleAction::execute_for_new_particles(AttributesRefGroup &new_particles,
ParticleActionContext &parent_context)
{
+ std::array<BLI::class_id_t, 1> context_ids = {BLI::get_class_id<ParticleCurrentTimesContext>()};
for (MutableAttributesRef attributes : new_particles) {
ParticleCurrentTimesContext current_times_context;
@@ -43,7 +45,7 @@ void ParticleAction::execute_for_new_particles(AttributesRefGroup &new_particles
IndexMask(attributes.size()),
attributes,
parent_context.buffer_cache(),
- {BLI::get_class_id<ParticleCurrentTimesContext>()},
+ context_ids,
{(void *)¤t_times_context});
this->execute(context);
}
@@ -52,6 +54,8 @@ void ParticleAction::execute_for_new_particles(AttributesRefGroup &new_particles
void ParticleAction::execute_for_new_particles(AttributesRefGroup &new_particles,
OffsetHandlerInterface &offset_handler_interface)
{
+ std::array<BLI::class_id_t, 1> context_ids = {BLI::get_class_id<ParticleCurrentTimesContext>()};
+
for (MutableAttributesRef attributes : new_particles) {
ParticleCurrentTimesContext current_times_context;
current_times_context.current_times = attributes.get<float>("Birth Time");
@@ -60,7 +64,7 @@ void ParticleAction::execute_for_new_particles(AttributesRefGroup &new_particles
IndexMask(attributes.size()),
attributes,
offset_handler_interface.buffer_cache(),
- {BLI::get_class_id<ParticleCurrentTimesContext>()},
+ context_ids,
{(void *)¤t_times_context});
this->execute(context);
}
@@ -70,21 +74,22 @@ void ParticleAction::execute_from_event(EventExecuteInterface &event_interface)
{
ParticleCurrentTimesContext current_times_context;
current_times_context.current_times = event_interface.current_times();
-
ParticleIntegratedOffsets offsets_context = {event_interface.attribute_offsets()};
-
ParticleRemainingTimeInStep remaining_time_context;
remaining_time_context.remaining_times = event_interface.remaining_durations();
- ParticleActionContext context(
- event_interface.particle_allocator(),
- event_interface.pindices(),
- event_interface.attributes(),
- event_interface.buffer_cache(),
- {BLI::get_class_id<ParticleCurrentTimesContext>(),
- BLI::get_class_id<ParticleIntegratedOffsets>(),
- BLI::get_class_id<ParticleRemainingTimeInStep>()},
- {(void *)¤t_times_context, (void *)&offsets_context, (void *)&remaining_time_context});
+ std::array<BLI::class_id_t, 3> context_ids = {BLI::get_class_id<ParticleCurrentTimesContext>(),
+ BLI::get_class_id<ParticleIntegratedOffsets>(),
+ BLI::get_class_id<ParticleRemainingTimeInStep>()};
+ std::array<void *, 3> contexts = {
+ (void *)¤t_times_context, (void *)&offsets_context, (void *)&remaining_time_context};
+
+ ParticleActionContext context(event_interface.particle_allocator(),
+ event_interface.pindices(),
+ event_interface.attributes(),
+ event_interface.buffer_cache(),
+ context_ids,
+ contexts);
this->execute(context);
}
@@ -108,21 +113,22 @@ void ParticleAction::execute_from_offset_handler(OffsetHandlerInterface &offset_
ParticleCurrentTimesContext current_times_context;
current_times_context.current_times = current_times;
-
ParticleIntegratedOffsets offsets_context = {offset_handler_interface.attribute_offsets()};
-
ParticleRemainingTimeInStep remaining_time_context;
remaining_time_context.remaining_times = offset_handler_interface.remaining_durations();
- ParticleActionContext context(
- offset_handler_interface.particle_allocator(),
- offset_handler_interface.mask(),
- offset_handler_interface.attributes(),
- offset_handler_interface.buffer_cache(),
- {BLI::get_class_id<ParticleCurrentTimesContext>(),
- BLI::get_class_id<ParticleIntegratedOffsets>(),
- BLI::get_class_id<ParticleRemainingTimeInStep>()},
- {(void *)¤t_times_context, (void *)&offsets_context, (void *)&remaining_time_context});
+ std::array<BLI::class_id_t, 3> context_ids = {BLI::get_class_id<ParticleCurrentTimesContext>(),
+ BLI::get_class_id<ParticleIntegratedOffsets>(),
+ BLI::get_class_id<ParticleRemainingTimeInStep>()};
+ std::array<void *, 3> contexts = {
+ (void *)¤t_times_context, (void *)&offsets_context, (void *)&remaining_time_context};
+
+ ParticleActionContext context(offset_handler_interface.particle_allocator(),
+ offset_handler_interface.mask(),
+ offset_handler_interface.attributes(),
+ offset_handler_interface.buffer_cache(),
+ context_ids,
+ contexts);
this->execute(context);
}
More information about the Bf-blender-cvs
mailing list