Mercurial > vim
comparison src/insexpand.c @ 34603:02fbe0bd9418 v9.1.0193
patch 9.1.0193: May leak memory in completion when ga_grow() fails
Commit: https://github.com/vim/vim/commit/70e566b0bd29189b1baf3dc915b6a98de36fbded
Author: zeertzjq <zeertzjq@outlook.com>
Date: Thu Mar 21 07:11:58 2024 +0100
patch 9.1.0193: May leak memory in completion when ga_grow() fails
Problem: May leak memory in completion when ga_grow() fails.
Solution: Free "wca" when ga_grow() fails (zeertzjq).
fixes: #14248
closes: #14249
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 21 Mar 2024 07:15:05 +0100 |
parents | 5a8340e044f4 |
children | 6d3a5ef458cd |
comparison
equal
deleted
inserted
replaced
34602:c7680d286e1f | 34603:02fbe0bd9418 |
---|---|
651 // Multi-byte characters can occupy up to five bytes more than | 651 // Multi-byte characters can occupy up to five bytes more than |
652 // ASCII characters, and we also need one byte for NUL, so when | 652 // ASCII characters, and we also need one byte for NUL, so when |
653 // getting to six bytes from the edge of IObuff switch to using a | 653 // getting to six bytes from the edge of IObuff switch to using a |
654 // growarray. Add the character in the next round. | 654 // growarray. Add the character in the next round. |
655 if (ga_grow(&gap, IOSIZE) == FAIL) | 655 if (ga_grow(&gap, IOSIZE) == FAIL) |
656 { | |
657 vim_free(wca); | |
656 return (char_u *)"[failed]"; | 658 return (char_u *)"[failed]"; |
659 } | |
657 *p = NUL; | 660 *p = NUL; |
658 STRCPY(gap.ga_data, IObuff); | 661 STRCPY(gap.ga_data, IObuff); |
659 gap.ga_len = (int)STRLEN(IObuff); | 662 gap.ga_len = (int)STRLEN(IObuff); |
660 } | 663 } |
661 else if (has_mbyte) | 664 else if (has_mbyte) |