view runtime/indent/python.vim @ 33295:a43861545866 v9.0.1913

patch 9.0.1913: if_python: undefined behaviour for function pointers Commit: https://github.com/vim/vim/commit/2ce070c27acd12ccc614afa4cecf4970a645a4af Author: Yee Cheng Chin <ychin.git@gmail.com> Date: Tue Sep 19 20:30:22 2023 +0200 patch 9.0.1913: if_python: undefined behaviour for function pointers Problem: if_python: undefined behaviour for function pointers Solution: Fix if_python undefined behavior for function pointer casts Identified by clang 17 UBSAN (see #12745). Make sure to cast function pointers with the same signature only. closes: #13122 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Tue, 19 Sep 2023 20:45:05 +0200
parents 4027cefc2aab
children
line wrap: on
line source

" Vim indent file
" Language:	Python
" Maintainer:	The Vim Project <https://github.com/vim/vim>
" Last Change:	2023 Aug 10
" Former Maintainer:	Bram Moolenaar <Bram@vim.org>
" Original Author:	David Bustos <bustos@caltech.edu>

" Only load this indent file when no other was loaded.
if exists("b:did_indent")
  finish
endif
let b:did_indent = 1

" Some preliminary settings
setlocal nolisp		" Make sure lisp indenting doesn't supersede us
setlocal autoindent	" indentexpr isn't much help otherwise

setlocal indentexpr=python#GetIndent(v:lnum)
setlocal indentkeys+=<:>,=elif,=except

let b:undo_indent = "setl ai< inde< indk< lisp<"

" Only define the function once.
if exists("*GetPythonIndent")
  finish
endif

" Keep this for backward compatibility, new scripts should use
" python#GetIndent()
function GetPythonIndent(lnum)
  return python#GetIndent(a:lnum)
endfunction

" vim:sw=2