Branch: refs/heads/master
Home: https://github.com/synfig/synfig
Commit: 893c531a1fab065a6263c5e4155d1baf0525eb36
https://github.com/synfig/synfig/commit/893c531a1fab065a6263c5e4155d1baf0525eb36
Author: rodolforg <[email protected]>
Date: 2023-04-12 (Wed, 12 Apr 2023)
Changed paths:
M synfig-core/src/synfig/synfig_iterations.cpp
Log Message:
-----------
fix: possible invalid memory access on replacing valuenodes (#3050)
As `dyn_param_list` is a reference to a vector, and the vector
can change in the loop, it can have invalid "iterators"/items.
Possible solutions:
1. `dyn_param_list` be a copy not a reference
2. Implement a `Layer::replace_dynamic_param()`
3. Store all the changes in another variable and postpone the actual
changes until we finish the loop
The first one can create a "large" copy.
The second one is interesting, but I `git grep` the code and it does not
seem to be needed anywhere else XD The existent disconnections are for
replacing with a (static) ValueBase.
Therefore, I opted for the 3rd solution. It is lighter than option 1 and
less 'intrusive' than the second one.
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl