readline: fix the REPL on editor mode crashing during tab completion#43543
Uh oh!
There was an error while loading. Please reload this page.
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#43528. This PR fixes the REPL on editor mode crashing during tab completion.
The root cause of this issue is that
commonPrefixcould receive an empty array of completions because of #41632.On editor mode, the completions are converted into the common prefix string in
REPLServer.prototype.completeOnEditorModeL1603(I'm not sure why this wrapper is needed). And then[kTabCompleter]()is called as a callback with the completion as its argument.node/lib/repl.js
Lines 1596 to 1607 in 6f924ac
For example, the completions for
aare['async', 'await', 'Array', ...](note that #41632 made REPL case-incentive) and their common prefix string is''(the return value ofcommonPrefix(['async', 'await', 'Array', ...])).This means the completions is
['']when[kTabCompleter]()is called, andcommonPrefix([])will be called at L670.node/lib/internal/readline/interface.js
Lines 662 to 672 in 6f924ac