Mercurial > vim
comparison src/gui_w32.c @ 27259:59cdcd1e47b8 v8.2.4158
patch 8.2.4158: MS-Windows: memory leak in :browse
Commit: https://github.com/vim/vim/commit/14b8d6ac6b50f2f4f3e7463e4c335f51a512ad30
Author: K.Takata <kentkt@csc.jp>
Date: Thu Jan 20 15:05:22 2022 +0000
patch 8.2.4158: MS-Windows: memory leak in :browse
Problem: MS-Windows: memory leak in :browse.
Solution: Free stuff before returning. (Ken Takata, closes https://github.com/vim/vim/issues/9574)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 20 Jan 2022 16:15:04 +0100 |
parents | d5570658f18d |
children | a63505f33894 |
comparison
equal
deleted
inserted
replaced
27258:43d000669fe8 | 27259:59cdcd1e47b8 |
---|---|
3585 WCHAR *titlep = NULL; | 3585 WCHAR *titlep = NULL; |
3586 WCHAR *extp = NULL; | 3586 WCHAR *extp = NULL; |
3587 WCHAR *initdirp = NULL; | 3587 WCHAR *initdirp = NULL; |
3588 WCHAR *filterp; | 3588 WCHAR *filterp; |
3589 char_u *p, *q; | 3589 char_u *p, *q; |
3590 BOOL ret; | |
3590 | 3591 |
3591 if (dflt == NULL) | 3592 if (dflt == NULL) |
3592 fileBuf[0] = NUL; | 3593 fileBuf[0] = NUL; |
3593 else | 3594 else |
3594 { | 3595 { |
3653 # ifdef FEAT_SHORTCUT | 3654 # ifdef FEAT_SHORTCUT |
3654 if (curbuf->b_p_bin) | 3655 if (curbuf->b_p_bin) |
3655 fileStruct.Flags |= OFN_NODEREFERENCELINKS; | 3656 fileStruct.Flags |= OFN_NODEREFERENCELINKS; |
3656 # endif | 3657 # endif |
3657 if (saving) | 3658 if (saving) |
3658 { | 3659 ret = GetSaveFileNameW(&fileStruct); |
3659 if (!GetSaveFileNameW(&fileStruct)) | |
3660 return NULL; | |
3661 } | |
3662 else | 3660 else |
3663 { | 3661 ret = GetOpenFileNameW(&fileStruct); |
3664 if (!GetOpenFileNameW(&fileStruct)) | |
3665 return NULL; | |
3666 } | |
3667 | 3662 |
3668 vim_free(filterp); | 3663 vim_free(filterp); |
3669 vim_free(initdirp); | 3664 vim_free(initdirp); |
3670 vim_free(titlep); | 3665 vim_free(titlep); |
3671 vim_free(extp); | 3666 vim_free(extp); |
3672 | 3667 |
3673 // Convert from UCS2 to 'encoding'. | 3668 if (!ret) |
3669 return NULL; | |
3670 | |
3671 // Convert from UTF-16 to 'encoding'. | |
3674 p = utf16_to_enc(fileBuf, NULL); | 3672 p = utf16_to_enc(fileBuf, NULL); |
3675 if (p == NULL) | 3673 if (p == NULL) |
3676 return NULL; | 3674 return NULL; |
3677 | 3675 |
3678 // Give focus back to main window (when using MDI). | 3676 // Give focus back to main window (when using MDI). |