comparison src/evalfunc.c @ 34405:5337abbdf88e v9.1.0127

patch 9.1.0127: Naming a non-pointer variable "oap" is strange Commit: https://github.com/vim/vim/commit/5e3674b42da10b7e7c72d1f20f9a15379af1b60a Author: zeertzjq <zeertzjq@outlook.com> Date: Thu Feb 22 19:51:34 2024 +0100 patch 9.1.0127: Naming a non-pointer variable "oap" is strange Problem: Naming a non-pointer variable "oap" is strange. Solution: Rename it to "oa". Also prevent using freed memory in case of memory allocation failure. (zeertzjq) closes: #14075 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 22 Feb 2024 20:00:07 +0100
parents 940c794b6ba7
children d06ffca91441
comparison
equal deleted inserted replaced
34404:1a5657b6c8dd 34405:5337abbdf88e
5483 */ 5483 */
5484 static void 5484 static void
5485 f_getregion(typval_T *argvars, typval_T *rettv) 5485 f_getregion(typval_T *argvars, typval_T *rettv)
5486 { 5486 {
5487 linenr_T lnum; 5487 linenr_T lnum;
5488 oparg_T oap; 5488 oparg_T oa;
5489 struct block_def bd; 5489 struct block_def bd;
5490 char_u *akt = NULL; 5490 char_u *akt = NULL;
5491 int inclusive = TRUE; 5491 int inclusive = TRUE;
5492 int fnum = -1; 5492 int fnum = -1;
5493 pos_T p1, p2; 5493 pos_T p1, p2;
5582 { 5582 {
5583 colnr_T sc1, ec1, sc2, ec2; 5583 colnr_T sc1, ec1, sc2, ec2;
5584 5584
5585 getvvcol(curwin, &p1, &sc1, NULL, &ec1); 5585 getvvcol(curwin, &p1, &sc1, NULL, &ec1);
5586 getvvcol(curwin, &p2, &sc2, NULL, &ec2); 5586 getvvcol(curwin, &p2, &sc2, NULL, &ec2);
5587 oap.motion_type = MBLOCK; 5587 oa.motion_type = MBLOCK;
5588 oap.inclusive = TRUE; 5588 oa.inclusive = TRUE;
5589 oap.op_type = OP_NOP; 5589 oa.op_type = OP_NOP;
5590 oap.start = p1; 5590 oa.start = p1;
5591 oap.end = p2; 5591 oa.end = p2;
5592 oap.start_vcol = MIN(sc1, sc2); 5592 oa.start_vcol = MIN(sc1, sc2);
5593 if (*p_sel == 'e' && ec1 < sc2 && 0 < sc2 && ec2 > ec1) 5593 if (*p_sel == 'e' && ec1 < sc2 && 0 < sc2 && ec2 > ec1)
5594 oap.end_vcol = sc2 - 1; 5594 oa.end_vcol = sc2 - 1;
5595 else 5595 else
5596 oap.end_vcol = MAX(ec1, ec2); 5596 oa.end_vcol = MAX(ec1, ec2);
5597 } 5597 }
5598 5598
5599 // Include the trailing byte of a multi-byte char. 5599 // Include the trailing byte of a multi-byte char.
5600 l = utfc_ptr2len((char_u *)ml_get_pos(&p2)); 5600 l = utfc_ptr2len((char_u *)ml_get_pos(&p2));
5601 if (l > 1) 5601 if (l > 1)
5607 5607
5608 if (region_type == MLINE) 5608 if (region_type == MLINE)
5609 akt = vim_strsave(ml_get(lnum)); 5609 akt = vim_strsave(ml_get(lnum));
5610 else if (region_type == MBLOCK) 5610 else if (region_type == MBLOCK)
5611 { 5611 {
5612 block_prep(&oap, &bd, lnum, FALSE); 5612 block_prep(&oa, &bd, lnum, FALSE);
5613 akt = block_def2str(&bd); 5613 akt = block_def2str(&bd);
5614 } 5614 }
5615 else if (p1.lnum < lnum && lnum < p2.lnum) 5615 else if (p1.lnum < lnum && lnum < p2.lnum)
5616 akt = vim_strsave(ml_get(lnum)); 5616 akt = vim_strsave(ml_get(lnum));
5617 else 5617 else
5626 vim_free(akt); 5626 vim_free(akt);
5627 } 5627 }
5628 5628
5629 if (akt == NULL || ret == FAIL) 5629 if (akt == NULL || ret == FAIL)
5630 { 5630 {
5631 list_free(rettv->vval.v_list); 5631 clear_tv(rettv);
5632 (void)rettv_list_alloc(rettv);
5632 break; 5633 break;
5633 } 5634 }
5634 } 5635 }
5635 5636
5636 virtual_op = save_virtual; 5637 virtual_op = save_virtual;