Fix crash when passing filenames on command-line - #20
Open
adriaandegroot wants to merge 1 commit into
Open
adriaandegroot wants to merge 1 commit into
adriaandegroot wants to merge 1 commit into
Conversation
Consider running `diamond file.txt`. If previously there was an untitled tab open and nothing else, we arrive here with 2 tabs, `cnt==2`. The first for-loop finds an untitled tab at index `k==0` and decrements `cnt`, then the for-loop increments `k` and the for-loop terminates (because `1 < 1` is false). We have `cnt==1` but an **empty** list `m_openedFiles`. This crashes with an out-of-bounds access in the second for-loop, because `cnt` doesn't match the length of the list anymore. As a fix: - do not modify `cnt` in the first for-loop, always check all of the current tabs, - re-calculate the `cnt` based on the files that are actually opened, before the second loop.
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.
Consider running
diamond file.txt. If previously therewas an untitled tab open and nothing else, we arrive
here with 2 tabs,
cnt==2. The first for-loop findsan untitled tab at index
k==0and decrementscnt,then the for-loop increments
kand the for-loop terminates(because
1 < 1is false). We havecnt==1but an emptylist
m_openedFiles. This crashes with an out-of-bounds accessin the second for-loop, because
cntdoesn't match the lengthof the list anymore.
As a fix:
cntin the first for-loop, always checkall of the current tabs,
cntbased on the files that are actuallyopened, before the second loop.