diff options
| -rw-r--r-- | src/nvim/misc1.c | 2 | ||||
| -rw-r--r-- | test/functional/options/tabstop_spec.lua | 23 | 
2 files changed, 24 insertions, 1 deletions
| diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index 2f02985875..137de84953 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -1274,7 +1274,7 @@ int plines_win_nofold(win_T *wp, linenr_T lnum)     */    width = wp->w_width - win_col_off(wp);    if (width <= 0 || col > 32000) { -    return 32000;  // bigger than the number of lines of the screen +    return 32000;  // bigger than the number of screen columns    }    if (col <= (unsigned int)width) {      return 1; diff --git a/test/functional/options/tabstop_spec.lua b/test/functional/options/tabstop_spec.lua new file mode 100644 index 0000000000..dc3ba38438 --- /dev/null +++ b/test/functional/options/tabstop_spec.lua @@ -0,0 +1,23 @@ +local helpers = require('test.functional.helpers')(after_each) + +local clear = helpers.clear +local feed = helpers.feed +local eq = helpers.eq +local eval = helpers.eval + +describe("'tabstop' option", function() +  before_each(function() +    clear() +  end) + +  -- NOTE: Setting 'tabstop' to a big number reproduces crash #2838. +  -- Disallowing big 'tabstop' would not fix #2838, only hide it. +  it("tabstop=<big-number> does not crash #2838", function() +    -- Insert a <Tab> character for 'tabstop' to work with. +    feed('i<Tab><Esc>') +    -- Set 'tabstop' to a very high value. +    -- Use feed(), not command(), to provoke crash. +    feed(':set tabstop=3000000000<CR>') +    eq(2, eval("1+1"))  -- Still alive? +  end) +end) | 
