nv_disc(NV_LAST) loses trailing shell context from discipline stack #276
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 is the underlying cause for the issue worked around in
3654ee73c03fb622dc878d6d
Each environment variable (name/value pair) has a linked list of disciplines
attached to it, and at the end of that list there is optionally a shell context
pointer. For example, for the EDITOR variable:
Here, the EDITOR Namval_t has a discipline stack containing
EDITOR_disc and &Shell_t.nvfun.
The problem arises when a new discipline is pushed onto the stack, such as when
using typeset -u to add an upper-case translation discipline.
TRANS_disc has been pushed onto the end of the discipline stack, but the
shell handle has been lost.
With this change, the attributes and variables tests pass (this is on
illumos where this change originates).