To: vim_dev@googlegroups.com Subject: Patch 7.3.169 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.169 Problem: Freeing memory already freed, warning from static code analyzer. Solution: Initialize pointers to NULL, correct use of "mustfree". (partly by Dominique Pelle) Files: src/mis1.c *** ../vim-7.3.168/src/misc1.c 2011-04-28 13:01:59.000000000 +0200 --- src/misc1.c 2011-04-28 17:42:00.000000000 +0200 *************** *** 3505,3511 **** if (enc_utf8 && var != NULL) { int len; ! char_u *pp; /* Convert from active codepage to UTF-8. Other conversions are * not done, because they would fail for non-ASCII characters. */ --- 3505,3511 ---- if (enc_utf8 && var != NULL) { int len; ! char_u *pp = NULL; /* Convert from active codepage to UTF-8. Other conversions are * not done, because they would fail for non-ASCII characters. */ *************** *** 3872,3882 **** * Vim's version of getenv(). * Special handling of $HOME, $VIM and $VIMRUNTIME. * Also does ACP to 'enc' conversion for Win32. */ char_u * vim_getenv(name, mustfree) char_u *name; ! int *mustfree; /* set to TRUE when returned is allocated */ { char_u *p; char_u *pend; --- 3872,3884 ---- * Vim's version of getenv(). * Special handling of $HOME, $VIM and $VIMRUNTIME. * Also does ACP to 'enc' conversion for Win32. + * "mustfree" is set to TRUE when returned is allocated, it must be + * initialized to FALSE by the caller. */ char_u * vim_getenv(name, mustfree) char_u *name; ! int *mustfree; { char_u *p; char_u *pend; *************** *** 3898,3904 **** if (enc_utf8) { int len; ! char_u *pp; /* Convert from active codepage to UTF-8. Other conversions are * not done, because they would fail for non-ASCII characters. */ --- 3900,3906 ---- if (enc_utf8) { int len; ! char_u *pp = NULL; /* Convert from active codepage to UTF-8. Other conversions are * not done, because they would fail for non-ASCII characters. */ *************** *** 3942,3948 **** if (enc_utf8) { int len; ! char_u *pp; /* Convert from active codepage to UTF-8. Other conversions * are not done, because they would fail for non-ASCII --- 3944,3950 ---- if (enc_utf8) { int len; ! char_u *pp = NULL; /* Convert from active codepage to UTF-8. Other conversions * are not done, because they would fail for non-ASCII *************** *** 3950,3956 **** acp_to_enc(p, (int)STRLEN(p), &pp, &len); if (pp != NULL) { ! if (mustfree) vim_free(p); p = pp; *mustfree = TRUE; --- 3952,3958 ---- acp_to_enc(p, (int)STRLEN(p), &pp, &len); if (pp != NULL) { ! if (*mustfree) vim_free(p); p = pp; *mustfree = TRUE; *** ../vim-7.3.168/src/version.c 2011-04-28 17:30:05.000000000 +0200 --- src/version.c 2011-04-28 17:48:04.000000000 +0200 *************** *** 716,717 **** --- 716,719 ---- { /* Add new patch number below this line */ + /**/ + 169, /**/ -- A day without sunshine is like, well, night. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///