| Commit message (Collapse) | Author | Age |
... | |
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem : getdigits() currently returns a long, but at most places,
return value is casted (unsafely) into an int. Making casts
safe would introduce a lot of fuss in the form of assertions
checking for limits.
Note : We cannot just change return type to int, because, at some
places, legitimate long values are used. For example, in
diff.c, for line numbers.
Solution : Introduce new functions:
- get_digits() : Gets an intmax_t from a string.
- get_int_digits() : Wrapper for ints.
- get_long_digits() : Wrapper for longs.
And replace getdigits() invocations by the appropiate
wrapper invocations.
|
|
|
|
|
|
|
|
| |
Problem: ":sign jump" may use another window even though the file is
already edited in the current window.
Solution: First check if the file is in the current window. (James McCoy)
https://code.google.com/p/vim/source/detail?r=v7-4-487
|
|
|
|
|
|
|
| |
Problem: Using status line height in width computations.
Solution: Use one instead. (Hirohito Higashi)
https://code.google.com/p/vim/source/detail?r=v7-4-518
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem : Dereference of null pointer @ 1980.
Diagnostic : False positive.
Rationale : I haven't been able to find the real reason why this is
signaled. Nonetheless, I've been able to track down the
introduction of this warning to commit
77135447e09903b45d1482da45869946212f7904.
The change there affecting this function is just a
transformation maintaining semantics. So, this must be a
FP, though I can't explain why.
Analyzer thinks `win->w_buffer` can be null in line 1980,
following an error path assuming win->w_buffer null at line
1819. Given that `win_close` function was not modified by
mentioned commit, I don't understand why this path is
analyzed after the changes, but not before them. Or if it's
analyzed, why it's discarded before changes but not after
them. I don't see anything in changes to
`close_last_window_tabpage` that should affect to
being able to deduce `win->w_buffer` is not null.
Resolution : Assert buffer not null in `win_close_othertab`.
Function comments state that passed window should have a
buffer that can be hidden, which implies there should be a
buffer.
Reverting changes to `close_last_window_tabpage` in
mentioned commit would be another way to fix this (tried
and worked).
But assert is preferred in this case because flat style
reads better and we have some other way to fix it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replace code like this
```c
func() {
if (cond) {
...
...
...
}
return ret;
}
```
```c
for (...) {
if (cond) {
...
...
...
}
}
```
with
```c
func() {
if (!cond) {
return ret;
}
...
...
...
}
```
```c
for (...) {
if (!cond) {
continue;
}
...
...
...
}
```
|
| |
|
|
|
|
|
|
|
|
| |
Problem : Dereference of null pointer @ 4978.
Diagnostic : False positive.
Rationale : tabline_height() shouldn't be called when a tab doesn't
exist yet (this is, before initialization).
Resolution : Assert function precondition.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem : Dereference of null pointer @ 4512.
Diagnostic : False positive.
Rationale : Suggested error path implies `fr == NULL` after 4504.
That's not possible, because:
- curfr and curfr->next must be both nonnull, as we are
dragging the divider between the two.
- after conditional, fr is one of those two (the one that
grows).
Resolution : Assert fr.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem : Dereference of null pointer @ 2196.
Diagnostic : False positive.
Rationale : Suggested error path implies `frp->child == NULL` while
being under condition `frp2->fr_layout == frp->fr_layout`,
which is impossible:
- If frp2 is frp's parent, then frp2's layout is FR_COL or
FR_ROW;
- if frp->child is NULL, the frp's layout is FR_LEAF.
- Therefore, they can't be equal.
Resolution : Assert frp->child not null.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem : Dereference of null pointer @ 1268.
Diagnostic : False positive.
Rationale : Suggested error path implies current window's frame to be
the only child of its parent, which is ruled out by
`if (firstwin == lastwin) {` check at the beginning.
Resolution : Assert another child remains after removing current frame.
Strictly, assert is only needed in false branch of
conditional, but we add it the same in the true branch to
reduce reader surprise.
Several forms of a single assert after
`if (firstwin == lastwin) {` were tried, but analyzer
cannot follow implications that way.
|
| |
|
|\
| |
| | |
Remove FOR_ALL_WINDOWS and replace with FOR_ALL_WINDOWS_IN_TAB(curtab)
|
| | |
|
|\ \
| | |
| | | |
vim-patch:7.4.454
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: When using a Visual selection of multiple words and doing
CTRL-W_] it jumps to the tag matching the word under the
cursor, not the selected text. (Patrick hemmer)
Solution: Do not reset Visual mode. (idea by Christian Brabandt)
https://code.google.com/p/vim/source/detail?r=0cdff7c268559f8f34eae073a013ece71b62b9e3
|
|\ \
| | |
| | | |
vim-patch:7.4.320
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Problem: Possible crash when an BufLeave autocommand deletes the buffer.
Solution: Check for the window pointer being valid. Postpone freeing the
window until autocommands are done. (Yasuhiro Matsumoto)
https://code.google.com/p/vim/source/detail?r=v7-4-320
|
| |/
|/|
| |
| |
| |
| |
| | |
Problem: When splitting a window the changelist position is wrong.
Solution: Copy the changelist position. (Jacob Niehus)
https://code.google.com/p/vim/source/detail?r=v7-4-386
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
| |
Problem: When 'equalalways' is set a split may report "no room" even though
there is plenty of room.
Solution: Compute the available room properly. (Yukihiro Nakadaira)
https://code.google.com/p/vim/source/detail?r=v7-4-377
|
|
|
|
|
|
|
| |
Problem: Compiler warning for unused argument and unused variable.
Solution: Add UNUSED. Move variable inside #ifdef.
https://code.google.com/p/vim/source/detail?r=v7-4-373
|
|
|
|
|
|
|
|
| |
Problem: When 'winminheight' is zero there might not be one line for the
current window.
Solution: Change the size computations. (Yukihiro Nakadaira)
https://code.google.com/p/vim/source/detail?r=v7-4-372
|
|
|
|
|
|
|
| |
Problem: Crash when using ":botright split" when there isn't much space.
Solution: Add a check for the minimum width/height. (Yukihiro Nakadaira)
https://code.google.com/p/vim/source/detail?r=v7-4-365
|
|
|
|
|
|
|
| |
Problem: Using freed memory when exiting while compiled with EXITFREE.
Solution: Set curwin to NULL and check for that. (Dominique Pelle)
https://code.google.com/p/vim/source/detail?r=v7-4-369
|
|
|
|
|
|
|
|
| |
Problem: Restoring the window sizes after closing the command line window
doesn't work properly if there are nested splits.
Solution: Restore the sizes twice. (Hirohito Higashi)
https://code.google.com/p/vim/source/detail?r=v7-4-368
|
|
|
|
|
|
|
|
|
| |
Problem: When there are matches to highlight the whole window is redrawn,
which is slow.
Solution: Only redraw everything when lines were inserted or deleted.
Reset b_mod_xlines when needed. (Alexey Radkov)
https://code.google.com/p/vim/source/detail?r=v7-4-349
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Problem: Unnecessary initializations and other things related to
matchaddpos().
Solution: Code cleanup. (Alexey Radkov)
https://code.google.com/p/vim/source/detail?r=ce284c205558d103326a4c3f22f181774690b3eb
|
|
|
|
|
|
|
| |
Problem: matchdelete() does not always update the right lines.
Solution: Fix off-by-one error. (Ozaki Kiichi)
https://code.google.com/p/vim/source/detail?r=539ce56d8f35fe2deb5c4f57335e1adf97ae4e74
|
|
|
|
|
|
|
| |
Problem: Unitialized variables, causing some problems.
Solution: Initialize the variables. (Dominique Pelle)
https://code.google.com/p/vim/source/detail?r=03d260a8ea0c0c67f424c387dbe2af5754e5e589
|
|
|
|
|
|
|
|
|
|
| |
Problem: Using a regexp pattern to highlight a specific position can
be slow.
Solution: Add matchaddpos() to highlight specific positions
efficiently.
(Alexey Radkov.)
https://code.google.com/p/vim/source/detail?r=f9fa2e506b9f07549cd91074835c5c553db7b3a7
|
|
|
|
|
|
|
| |
Problem: Crash when starting gvim. Issue 230.
Solution: Check for a pointer to be NULL. (Christian Brabandt)
https://code.google.com/p/vim/source/detail?r=8ffcb546d782
|
|\
| |
| | |
Add FOR_ALL_BUFFERS helper
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: When moving the cursor and then switching to another window the
previous window isn't scrolled. (Yukihiro Nakadaira)
Solution: Call update_topline() before leaving the window. (Christian
Brabandt)
https://code.google.com/p/vim/source/detail?r=018df65085f8
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: When starting the gui and changing the window size the status line
may not be drawn correctly.
Solution: Catch new_win_height() being called recursively. (Christian
Brabandt)
https://code.google.com/p/vim/source/detail?r=1f288d247548
|
|/ |
|
|
|
|
|
|
|
|
| |
Problem: When increasing the size of the lower window, the upper
window jumps back to the top. (Ron Aaron)
Solution: Change setting the topline. (Nobuhiro Takasaki)
https://code.google.com/p/vim/source/detail?r=88a6e9f33822d33b6c32db578750c6c178c63f50
|
|
|
|
|
|
|
| |
Done by manual inspection of the output of this script:
grep -r -l -w "bool\|true\|false" * | grep 'c$\|h$' > has_bool
grep -r -l "stdbool.h" * | grep 'c$\|h$' > has_include
grep -F -x -v -f has_include has_bool
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
In win_close_othertab: Code can never be reached because of a
logical contradiction (CWE-561).
Pointer tp cannot be NULL at this point, so conditional operator ? can
be replaced with its second expression.
|
|
|
|
|
|
|
| |
Problem: Still a scrolling problem when loading a session file.
Solution: Fix off-by-one mistake. (Nobuhiro Takasaki)
https://code.google.com/p/vim/source/detail?r=8cb42aa3c4957a543e5dffe307475dbab969612f
|
| |
|