Mercurial > vim
comparison src/vim9execute.c @ 32661:9ae1bdff8457 v9.0.1662
patch 9.0.1662: crash when using a class member twice
Commit: https://github.com/vim/vim/commit/4e2406c7a9d5f7f03faec8c42fac15c192fb59b0
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jun 24 19:22:21 2023 +0100
patch 9.0.1662: crash when using a class member twice
Problem: Crash when using a class member twice. (Christian J. Robinson)
Solution: Make a copy of the value.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 24 Jun 2023 20:30:04 +0200 |
parents | 933cec0b89dc |
children | 448aef880252 |
comparison
equal
deleted
inserted
replaced
32660:14298ba478dc | 32661:9ae1bdff8457 |
---|---|
3965 case ISN_LOAD_CLASSMEMBER: | 3965 case ISN_LOAD_CLASSMEMBER: |
3966 { | 3966 { |
3967 if (GA_GROW_FAILS(&ectx->ec_stack, 1)) | 3967 if (GA_GROW_FAILS(&ectx->ec_stack, 1)) |
3968 goto theend; | 3968 goto theend; |
3969 classmember_T *cm = &iptr->isn_arg.classmember; | 3969 classmember_T *cm = &iptr->isn_arg.classmember; |
3970 *STACK_TV_BOT(0) = | 3970 copy_tv(cm->cm_class->class_members_tv + cm->cm_idx, |
3971 cm->cm_class->class_members_tv[cm->cm_idx]; | 3971 STACK_TV_BOT(0)); |
3972 ++ectx->ec_stack.ga_len; | 3972 ++ectx->ec_stack.ga_len; |
3973 } | 3973 } |
3974 break; | 3974 break; |
3975 | 3975 |
3976 case ISN_STORE_CLASSMEMBER: | 3976 case ISN_STORE_CLASSMEMBER: |