view runtime/plugin/tarPlugin.vim @ 33090:461541d860ac v9.0.1830

patch 9.0.1830: Vim9: crash when accessing a null object Commit: https://github.com/vim/vim/commit/d7085a06358c22250a27186bb7d52112ed4addd1 Author: Gianmaria Bajo <mg1979.git@gmail.com> Date: Thu Aug 31 18:15:26 2023 +0200 patch 9.0.1830: Vim9: crash when accessing a null object Problem: Vim9: crash when accessing a null object Solution: Check accessing a NULL object in def function An object is NULL when the variable is declared, but the constructor isn't called. Accessing/setting a member on the object crashed Vim. Note: this happens inside def functions, at script level things work differently. Accessing a NULL object member results in E1360 (correctly), while setting a value on it results in E1012 (type mismatch) so there's still something to fix. closes: #12973 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Gianmaria Bajo <mg1979.git@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Thu, 31 Aug 2023 18:30:03 +0200
parents 29c5f168c6fd
children e003aedbf9e1
line wrap: on
line source

" tarPlugin.vim -- a Vim plugin for browsing tarfiles
" Original was copyright (c) 2002, Michael C. Toren <mct@toren.net>
" Modified by Charles E. Campbell
" Distributed under the GNU General Public License.
"
" Updates are available from <http://michael.toren.net/code/>.  If you
" find this script useful, or have suggestions for improvements, please
" let me know.
" Also look there for further comments and documentation.
"
" This part only sets the autocommands.  The functions are in autoload/tar.vim.
" ---------------------------------------------------------------------
"  Load Once: {{{1
if &cp || exists("g:loaded_tarPlugin")
 finish
endif
let g:loaded_tarPlugin = "v32"
let s:keepcpo          = &cpo
set cpo&vim

" ---------------------------------------------------------------------
"  Public Interface: {{{1
augroup tar
  au!
  au BufReadCmd   tarfile::*	call tar#Read(expand("<amatch>"), 1)
  au FileReadCmd  tarfile::*	call tar#Read(expand("<amatch>"), 0)
  au BufWriteCmd  tarfile::*	call tar#Write(expand("<amatch>"))
  au FileWriteCmd tarfile::*	call tar#Write(expand("<amatch>"))

  if has("unix")
   au BufReadCmd   tarfile::*/*	call tar#Read(expand("<amatch>"), 1)
   au FileReadCmd  tarfile::*/*	call tar#Read(expand("<amatch>"), 0)
   au BufWriteCmd  tarfile::*/*	call tar#Write(expand("<amatch>"))
   au FileWriteCmd tarfile::*/*	call tar#Write(expand("<amatch>"))
  endif

  au BufReadCmd   *.tar.gz		call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tar			call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.lrp			call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tar.bz2		call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tar.Z		call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tbz			call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tgz			call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tar.lzma	call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tar.xz		call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.txz			call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tar.zst		call tar#Browse(expand("<amatch>"))
  au BufReadCmd   *.tzs			call tar#Browse(expand("<amatch>"))
augroup END
com! -nargs=? -complete=file Vimuntar call tar#Vimuntar(<q-args>)

" ---------------------------------------------------------------------
" Restoration And Modelines: {{{1
" vim: fdm=marker
let &cpo= s:keepcpo
unlet s:keepcpo