Set active properties before emitting events#104
Open
Sakeran wants to merge 1 commit intoRanvierMUD:masterfrom
Open
Set active properties before emitting events#104Sakeran wants to merge 1 commit intoRanvierMUD:masterfrom
Sakeran wants to merge 1 commit intoRanvierMUD:masterfrom
Conversation
Contributor
|
I think I have experienced this as well. I have had to gate the deactivate listener to only fire once in a few things. But never looked into it. |
|
Really nice catch! |
azigler
added a commit
to azigler/core
that referenced
this pull request
Jun 7, 2020
- improve docstrings - use RanvierMUD#74, RanvierMUD#93, RanvierMUD#98, RanvierMUD#100, RanvierMUD#103, RanvierMUD#106, RanvierMUD#109, RanvierMUD#117, RanvierMUD#104, RanvierMUD#119, RanvierMUD#105
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This changes
Effect#activateandEffect#deactivatesuch that the Effect'sactiveproperty is set to the proper value before their corresponding events are emitted. Most importantly, this prevents a case where an infinite loop might be created.Example (some debugEffect.js):
In this case,
EffectList#validateEffectsand the listener function will be stuck invoking one another until the stack overflows. While less likely to occur practice, we could engineer a similar loop withEffect#activateand its related event.Setting the
activeproperty before any events are called ensures that each method will short-circuit before this becomes an issue.