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: