shada: fix failed assertion on exit (#12692)

If set the number of history saves is 0, assertions fail when inserting an entry on exit.
Dont insert an entry when the number of saves is 0 fixes the issue.

fixes #11497
This commit is contained in:
erw7
2020-07-31 23:08:34 +09:00
committed by GitHub
parent 82bfdbfe5c
commit a4fe8bdc97
2 changed files with 16 additions and 2 deletions

View File

@@ -2207,8 +2207,12 @@ static inline ShaDaWriteResult shada_read_when_writing(
shada_free_shada_entry(&entry);
break;
}
if (wms->hms[entry.data.history_item.histtype].hmll.size != 0) {
hms_insert(&wms->hms[entry.data.history_item.histtype], entry, true,
true);
} else {
shada_free_shada_entry(&entry);
}
break;
}
case kSDItemRegister: {

View File

@@ -2,6 +2,7 @@
local helpers = require('test.functional.helpers')(after_each)
local nvim_command, funcs, meths, nvim_feed, eq =
helpers.command, helpers.funcs, helpers.meths, helpers.feed, helpers.eq
local eval = helpers.eval
local shada_helpers = require('test.functional.shada.helpers')
local reset, clear = shada_helpers.reset, shada_helpers.clear
@@ -237,4 +238,13 @@ describe('ShaDa support code', function()
nvim_command('wshada')
end)
it('does not crash when number of history save to zero (#11497)', function()
nvim_command('set shada=\'10')
nvim_feed(':" Test\n')
nvim_command('wshada')
nvim_command('set shada=\'10,:0')
nvim_command('wshada')
eq(2, eval('1+1')) -- check nvim still running
end)
end)