Patch 8.2.0097

8 views
Skip to first unread message

Bram Moolenaar

unread,
Jan 7, 2020, 2:12:26 PM1/7/20
to vim...@googlegroups.com

Patch 8.2.0097
Problem: Crash with autocommand and spellfile. (Tim Pope)
Solution: Do not pop exestack when not pushed. (closes #5450)
Files: src/testdir/test_autocmd.vim, src/spellfile.c


*** ../vim-8.2.0096/src/testdir/test_autocmd.vim 2019-12-07 17:03:52.000000000 +0100
--- src/testdir/test_autocmd.vim 2020-01-07 19:04:40.742338284 +0100
***************
*** 2335,2337 ****
--- 2335,2359 ----
call delete('Xtest')
call delete('Xtest2')
endfunc
+
+ func Test_FileType_spell()
+ if !isdirectory('/tmp')
+ throw "Skipped: requires /tmp directory"
+ endif
+
+ " this was crashing with an invalid free()
+ setglobal spellfile=/tmp/en.utf-8.add
+ augroup crash
+ autocmd!
+ autocmd BufNewFile,BufReadPost crashfile setf somefiletype
+ autocmd BufNewFile,BufReadPost crashfile set ft=anotherfiletype
+ autocmd FileType anotherfiletype setlocal spell
+ augroup END
+ func! NoCrash() abort
+ edit /tmp/crashfile
+ endfunc
+ call NoCrash()
+
+ au! crash
+ setglobal spellfile=
+ endfunc
*** ../vim-8.2.0096/src/spellfile.c 2019-12-29 23:04:20.294639884 +0100
--- src/spellfile.c 2020-01-07 20:08:39.976790769 +0100
***************
*** 352,357 ****
--- 352,358 ----
slang_T *lp = NULL;
int c = 0;
int res;
+ int did_estack_push = FALSE;

fd = mch_fopen((char *)fname, "r");
if (fd == NULL)
***************
*** 392,397 ****
--- 393,399 ----

// Set sourcing_name, so that error messages mention the file name.
estack_push(ETYPE_SPELL, fname, 0);
+ did_estack_push = TRUE;

/*
* <HEADER>: <fileID>
***************
*** 578,584 ****
endOK:
if (fd != NULL)
fclose(fd);
! estack_pop();

return lp;
}
--- 580,587 ----
endOK:
if (fd != NULL)
fclose(fd);
! if (did_estack_push)
! estack_pop();

return lp;
}
*** ../vim-8.2.0096/src/version.c 2020-01-06 23:07:44.808998838 +0100
--- src/version.c 2020-01-07 19:05:31.798173638 +0100
***************
*** 744,745 ****
--- 744,747 ----
{ /* Add new patch number below this line */
+ /**/
+ 97,
/**/

--
The Law, in its majestic equality, forbids the rich, as well as the
poor, to sleep under the bridges, to beg in the streets, and to steal
bread. -- Anatole France

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages