Fix assigning stack variable to function parameter. #20310
Closed
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.
Fixes #20180 by 1. allocating extra memory for another tempsym_t before the loop with the recursive call to (un)pack_rec, 2. assigning lookahead or savsym to
*symptr->previous
, which copies the members of that tempsym_t to the tempsym_t pointed to by symptr->previous 3. and finally frees the extra memory after the loop ends but before copyingsavsym
orlookahead
tosymptr
.This might leak memory if the recursive call to (un)pack_rec croaks, but I'm not sure how to fix that. I suppose I could add a boolean flag to S_unpack_rec and S_pack_rec (or alternatively in tempsym_t) which would be set to false when called from another function and set to true on recursive calls (inside parentheses) and then call Safefree right before every croak in both these functions when isrecursive is true.