Mercurial > vim
view READMEdir/README_extra.txt @ 33393:016d8f863230 v9.0.1955
patch 9.0.1955: Vim9: lockvar issues with objects/classes
Commit: https://github.com/vim/vim/commit/ee865f37acab6cac2cee6a171d60e1b365f852b0
Author: Ernie Rael <errael@raelity.com>
Date: Fri Sep 29 19:53:55 2023 +0200
patch 9.0.1955: Vim9: lockvar issues with objects/classes
Problem: Vim9: lockvar issues with objects/classes
Solution: fix `get_lhs()` object/class access and avoid `SEGV`,
make error messages more accurate.
- `get_lval()` detects/returns object/class access
- `compile_lock_unlock()` generate code for bare static and obj_arg access
- `do_lock_var()` check lval for `ll_object`/`ll_class` and fail if so.
Details:
- Add `ll_object`/`ll_class`/`ll_oi` to `lval_T`.
- Add `lockunlock_T` to `isn_T` for `is_arg` to specify handling of `lval_root` in `get_lval()`.
- In `get_lval()`, fill in `ll_object`/`ll_class`/`ll_oi` as needed; when no `[idx] or .key`, check lval_root on the way out.
- In `do_lock_var()` check for `ll_object`/`ll_class`; also bullet proof ll_dict case
and give `Dictionay required` if problem. (not needed to avoid lockvar crash anymore)
- In `compile_lock_unlock()` compile for the class variable and func arg cases.
closes: #13174
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 29 Sep 2023 20:00:07 +0200 |
parents | 645722244c3f |
children | 4635e43f2c6f |
line wrap: on
line source
README_extra.txt for version 9.0 of Vim: Vi IMproved. These extra files of Vim are for special purposes. This README explains what the files are for. For general information about Vim, see the "README.txt" file. farsi/* Files for the Farsi (persian) language. If you don't know what Farsi is, this is not for you. src/if_sniff.* Interface to SNiFF. If you don't know what SNiFF is, this is not for you. src/os_amiga.* Files for the Amiga port. src/os_msdos.* src/os_dos.* Files for the MS-DOS port. src/os_mac.* Files for the Mac port. src/os_vms* Files for the VMS port. src/os_w32* src/os_win32.* Files for the Win32 port. src/gui_w32.* Files for the Win32 GUI. src/gui_w48.* Files for the Win32 and Win16 GUI. src/Make_mvc.mak MS Visual C++ makefile for the Win32 GUI. src/if_ole.* OLE automation interface, for MS Windows 95 and NT. src/GvimExt/* DLL for the "Edit with Vim" context menu entry nsis/* NSIS script to build the self-installing MS-Windows exe runtime/doc/*.man Preprocessed manual pages. runtime/macros/file_select.vim Vim script to browse directories (Unix only).