Fix: function calls within tuples / nested calls #2186
Merged
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.
What I did
Fix a memory corruption issue when performing a function call inside a tuple or as an argument inside another function call.
How I did it
The issue was happening because each argument/item was parsed without knowledge of the other items. When pushing memory to the stack prior to performing nested call, previous items were not accounted for and so not correctly preserved.
You can see the bug in action by run the test cases I've added against the current master branch.
To fix this, I've expanded the logic for parsing tuples and function call arguments. All nested calls are performed separately, prior to building the tuple/args. This way memory is correctly preserved.
How to verify it
Run the tests. I've added some new cases to verify that the bug no longer exists.
Cute Animal Picture