aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* | | Merge pull request #1516 from fmoralesc/new-patchesJustin M. Keyes2014-11-27
|\ \ \ | | | | | | | | vim-patch:7.4.425,435,467,472,473,478
| * | | vim-patch:7.4.478: Use character lenght for 'showbreak'Felipe Morales2014-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vim-patch:7.4.478 Problem: Using byte length instead of character length for 'showbreak'. Solution: Compute the character length. (Marco Hinz) https://code.google.com/p/vim/source/detail?r=v7-4-478
| * | | vim-patch:7.4.473Felipe Morales2014-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vim-patch:7.4.473 Problem: Cursor movement is incorrect when there is a number column/sign/fold column and 'sbr' is displayed. Solution: Adjust the column for 'sbr'. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=v7-4-473
| * | | vim-patch:7.4.472: Only draw "precedes" entry in 'listchar' when 'list' is onFelipe Morales2014-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vim-patch:7.4.472 Problem: The "precedes" entry in 'listchar' will be drawn when 'showbreak is set and list is not. Solution: Only draw this character when 'list' is on. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=af998690a8841d4df95cea0bed4246f2ba98e247
| * | | vim-patch:7.4.467: Avoid a problem with unwanted linebreaks in block modeFelipe Morales2014-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vim-patch:7.4.467 Avoid a problem with unwanted linebreaks in block mode https://code.google.com/p/vim/source/detail?r=v7-4-467
| * | | vim-patch:7.4.435: Disable linebreak temporarily when formatting lines.Felipe Morales2014-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vim-patch:7.4.435 Problem: Line formatting behaves differently when 'linebreak' is set. (mvxxc) Solution: Disable 'linebreak' temporarily. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=v7-4-435
| * | | vim-patch:7.4.425: Adjust virtcol when showbreak is setFelipe Morales2014-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vim-patch:7.4.425 Problem: When 'showbreak' is used "gj" may move to the wrong position. (Nazri Ramliy) Solution: Adjust virtcol when 'showbreak' is set. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=v7-4-425
* | | | ui: Move check_col/check_row functions to mbyte.cThiago de Arruda2014-11-27
| | | | | | | | | | | | | | | | | | | | These functions were only being used by mbyte.c, so move them and add the "static" modifier.
* | | | Remove code defined under USE_IM_CONTROL #ifdefsThiago de Arruda2014-11-27
| |/ / |/| | | | | | | | This is not being used and should not be part of the core anyway.
* | | ui: Remove redundant ui.h includesThiago de Arruda2014-11-27
| | | | | | | | | | | | Also move read_error_exit to os/input.c
* | | ui: Extract mouse.c/mouse.hThiago de Arruda2014-11-27
| | |
* | | ui: Remove ui_delay, ui_breakcheck and ui_set_shellsizeThiago de Arruda2014-11-27
| | | | | | | | | | | | | | | These functions only used to call another os_* function, so remove them and replace all occurences in the project.
* | | ui: Remove ui_inchar/ui_char_availThiago de Arruda2014-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Also: - Remove NO_CONSOLE_INPUT/NO_CONSULE preprocessor conditionals - Remove ctrl_c_interrupts variable, check for mapped_ctrl_c directly in process_interrupts() - Move ui_inchar profiling to input_poll which is where Nvim blocks for input.
* | | Add Boolean argument escape_csi to vim_feedkeysRui Abreu Ferreira2014-11-27
| |/ |/| | | | | | | | | | | | | | | - By default vim_feedkeys escaped all input for CSI/K_SPECIAL bytes before using it. However since vim_replace_termcodes() also escapes the input string chaining these functions together escapes input twice - vim_feedkeys() now takes a third Boolean argument to enable/disable escaping - Breaks API compatibility
* | Merge pull request #1552 from equalsraf/tb-fix-1530Justin M. Keyes2014-11-25
|\ \ | | | | | | add missing refcount increment for systemlist()
| * | Add missing refcount increment for systemlist()Rui Abreu Ferreira2014-11-25
| | | | | | | | | | | | | | | | | | | | | - get_system_output_as_rettv() was missing a refcount increment when returning an empty list, i.e. when there was no output - we now use rettv_list_aloc() instead of list_alloc() - issue #1530
* | | Fix substitute newline: Memory functions: Improve style.Eliseo Martínez2014-11-24
|/ / | | | | | | | | | | | | | | `try_malloc` was changed in 8bb2c2c0742c57150655e18cf8418a758cebdce8 to avoid a warning when size is 0. Then, this improves some things on that: - Use local vars instead of changing parameters. - Homogenize style for other related functions.
* | Fix Makefile for running valgrind with old tests.Julian Mehne2014-11-22
| |
* | event: No longer process K_EVENT automaticallyThiago de Arruda2014-11-21
| | | | | | | | | | | | | | Two new functions, `event_enable_deferred()`/`event_disable_deferred()` have to be called by code that is capable of handling asynchronicity. User-dialog states like "press ENTER to continue" or the swap file confirmation no longer will generate K_EVENT.
* | input: Refactor to ensure user input has higher priorityThiago de Arruda2014-11-21
| |
* | legacy tests: migrate test105Rainer Borene2014-11-20
| |
* | legacy tests: migrate test26Rainer Borene2014-11-20
| |
* | legacy tests: migrate test101Rainer Borene2014-11-20
| |
* | legacy tests: migrate test75Rainer Borene2014-11-20
| |
* | legacy tests: migrate test51Rainer Borene2014-11-20
| |
* | legacy tests: migrate test43Rainer Borene2014-11-20
| |
* | legacy tests: migrate test33Rainer Borene2014-11-20
| |
* | legacy tests: migrate test67Rainer Borene2014-11-20
| |
* | legacy tests: migrate test66Rainer Borene2014-11-20
| |
* | legacy tests: migrate test25Rainer Borene2014-11-20
| |
* | legacy tests: migrate test104Rainer Borene2014-11-20
| |
* | legacy tests: remove test21 filesRainer Borene2014-11-20
| |
* | legacy tests: migrate test5Rainer Borene2014-11-20
| |
* | Wconversion: Fix warnings in digraph.c.Florian Walch2014-11-19
| |
* | Wconversion: Fix warnings in cursor_shape.c.Florian Walch2014-11-19
| |
* | CMake: Set -Wconversion by default.Florian Walch2014-11-19
| |
* | Fix warnings: eval.c: f_rpcrequest(): Garbage value: MI.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | Problem : Assigned value is garbage or undefined @ 12578. Diagnostic : Multithreading issue. Rationale : Error can only occur if global `provider_call_nesting` is changed while function is executing. Resolution : Use local copy of global.
* | Fix warnings: screen.c: screenalloc(): Np arg (2): MI.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | Problems : Null pointer argument in call to memory copy function @ 6465. Null pointer argument in call to memory copy function @ 6475. Diagnostic : Multithreading issues. Rationale : Problem occurs if globals `enc_utf8` and `enc_dbcs` are modified while function is executing. Resolution : Use local copy of globals.
* | Fix warnings: eval.c: do_return(): Np dereference: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | Problem : Dereference of null pointer @ 18841. Diagnostic : False positive. Rationale : Suggested error path takes `reanimate` branch at 18827, assigning `rettv = current_funccal->rettv`. Then, inmediately after, it supposes rettv is null, which cannot happen, since current_funccal->rettv should always be non null. Resolution : Assert current_funccal->rettv non null.
* | Fix warnings: eval.c: add_nr_var(): Out of bounds: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem : Out-of-bound array access @ 18737. Diagnostic : False positive. Rationale : Situation is intentional. `dictitem_T` is a prefix all dict items whill share, but actual size of each item will be different depending on its key length. `di_key` array field is declared of size 1 just to have a field name, but real size will vary for each item. Resolution : Make analyzer ignore it. This could be refactored to use C99-allowed variable length arrays, but eval.c is bound to dissappear, so no effort is done in that sense.
* | Fix warnings: eval.c: call_user_func(): Out of bounds: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem : Out-of-bound array access @ 18429. Diagnostic : False positive. Rationale : Situation is intentional. `dictitem_T` is a prefix all dict items whill share, but actual size of each item will be different depending on its key length. `di_key` array field is declared of size 1 just to have a field name, but real size will vary for each item. Resolution : Make analyzer ignore it. This could be refactored to use C99-allowed variable length arrays, but eval.c is bound to dissappear, so no effort is done in that sense.
* | Fix warnings: eval.c: get_user_func_name(): Np dereference: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | Problem : Dereference of null pointer @ 18216. Diagnostic : False positive. Rationale : `hi` and `done` are static. Intended usage is for the first call to have idx == 0, so that they are initialized. Resolution : Assert hi after (optional) initialization.
* | Fix warnings: eval.c: clear_tv(): Bad free: RI.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem : Bad free @ 16076. Diagnostic : Real issue. Rationale : A non-allocated string is set at 4127, which later on can be tried to be freed if aborting. Resolution : Detect particular case (func with empty name) and don't free in that case. Another solution (use allocated string) was tried before, but it produced a leak difficult to solve. Finally applied solution works, but it produces a new false positive warning (Np dereference at 13763), deactivated by `assert(ptrs[i].item->li_next)`.
* | Fix warnings: eval.c: item_compare(): Garbage value: MI.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem : Result of operation is garbage or undefined @ 13565. Diagnostic : Multithreading issue. Rationale : Problem occurs only if global (static) variable `item_compare_keep_zero` changes after being used by `do_sort_uniq` but before being used by `item_compare` or `item_compare2`. Resolution : This is not an intra-function problem, as other MI's before, but rather an inter-function one. Thus, it can't be solved by using local copy of global. Therefore, we are forced to do a bit refactoring. We can't simply add a bool param to item_compare/item_compare2, as they couldn't be passed to qsort() that way. So, item_compare/item_compare2 are added a bool param and curried versions of them are added and used in their place.
* | Fix warnings: eval.c: dictitem_alloc(): Out-of-bounds access: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem : Out-of-bound array access @ 5737. Diagnostic : False positive. Rationale : Situation is intentional. `dictitem_T` is a prefix all dict items whill share, but actual size of each item will be different depending on its key length. `di_key` array field is declared of size 1 just to have a field name, but real size will vary for each item. Resolution : Make analyzer ignore it. This could be refactored to use C99-allowed variable length arrays, but eval.c is bound to dissappear, so no effort is done in that sense.
* | Fix warnings: eval.c: set_var_lval(): Np dereference: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem : Dereference of null pointer @ 2273. Diagnostic : False positive. Rationale : Suggested error would happen when assigning an rvalue with more items than the lvalue. Then we would enter conditional at: ``` if (lp->ll_li->li_next == NULL) { /* Need to add an empty item. */ list_append_number(lp->ll_list, 0); } lp->ll_li = lp->ll_li->li_next; ``` Analyzer thinks the value assigned to lp->ll_li is still NULL and is hit on the next iteration. Resolution : Assert lp->ll_li->li_next is not null anymore after list_append_number().
* | Fix warnings: window.c: tabline_height(): Np dereference: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | 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.
* | Fix warnings: window.c: win_drag_vsep_line(): Np dereference: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Fix warnings: window.c: winframe_remove(): Np dereference: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Fix warnings: window.c: win_rotate(): Np dereference: FP.Eliseo Martínez2014-11-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.