Attached are a couple of low priority patches.
In netbeans.c, there are 2 format mismatches (%d instead of %ld):
- fixed-format-netbeans.c.patch
In nbdebug.c, I see 2 functions [nbtrace() & nbprt()] which are
defined but which are never called from anywhere (are they needed?):
- fixed-deadcode-nbdebug.c.patch
When compiled with -DEXITFREE, Vim is meant to free all blocks
before exiting. Following patches frees a few memory blocks which
were not being freed before exiting. Freeing them helps to remove
false alerts when trying to search for real memory leaks.
- fixed-exitfree-search.c.patch
Fixes memory not freed when doing:
:rightleft
:/foobar
:q!
- fixed-exitfree-tag.c.patch
Fixes memory not freed when doing:
:pts foo
:q!
- fixed-exitfree-misc2.c.patch
Fixes memory not free when doing
:set keymap=esperanto " or any other keymap...
:q!
- fixed-exitfree-ex_docmd.c.patch
- fixed-exitfree-gui_gtk_x11.c.patch
Regards
-- Dominique
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---
Index: tag.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/tag.c,v
retrieving revision 1.46
diff -c -r1.46 tag.c
*** tag.c 13 Jan 2009 16:28:08 -0000 1.46
--- tag.c 7 Feb 2009 09:52:12 -0000
***************
*** 2542,2547 ****
--- 2542,2556 ----
{
ga_clear_strings(&tag_fnames);
do_tag(NULL, DT_FREE, 0, 0, 0);
+ tag_freematch();
+
+ # if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+ if (ptag_entry.tagname)
+ {
+ vim_free(ptag_entry.tagname);
+ ptag_entry.tagname = NULL;
+ }
+ # endif
}
#endif
Index: ex_docmd.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/ex_docmd.c,v
retrieving revision 1.164
diff -c -r1.164 ex_docmd.c
*** ex_docmd.c 28 Jan 2009 14:42:40 -0000 1.164
--- ex_docmd.c 7 Feb 2009 09:48:19 -0000
***************
*** 7846,7851 ****
--- 7846,7854 ----
{
vim_free(prev_dir);
prev_dir = NULL;
+
+ vim_free(globaldir);
+ globaldir = NULL;
}
#endif
Index: search.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/search.c,v
retrieving revision 1.68
diff -c -r1.68 search.c
*** search.c 18 Jul 2008 10:05:58 -0000 1.68
--- search.c 7 Feb 2009 09:46:30 -0000
***************
*** 345,350 ****
--- 345,359 ----
{
vim_free(spats[0].pat);
vim_free(spats[1].pat);
+
+ # ifdef FEAT_RIGHTLEFT
+ if (mr_pattern_alloced)
+ {
+ vim_free(mr_pattern);
+ mr_pattern_alloced = FALSE;
+ mr_pattern = NULL;
+ }
+ # endif
}
#endif
Index: misc2.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/misc2.c,v
retrieving revision 1.78
diff -c -r1.78 misc2.c
*** misc2.c 22 Jan 2009 20:32:04 -0000 1.78
--- misc2.c 7 Feb 2009 09:47:31 -0000
***************
*** 1010,1015 ****
--- 1010,1018 ----
# if defined(FEAT_PROFILE)
do_cmdline_cmd((char_u *)"profdel *");
# endif
+ # if defined(FEAT_KEYMAP)
+ do_cmdline_cmd((char_u *)"set keymap=");
+ #endif
# ifdef FEAT_TITLE
free_titles();
Index: gui_gtk_x11.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/gui_gtk_x11.c,v
retrieving revision 1.61
diff -c -r1.61 gui_gtk_x11.c
*** gui_gtk_x11.c 28 Nov 2008 20:28:56 -0000 1.61
--- gui_gtk_x11.c 7 Feb 2009 09:49:02 -0000
***************
*** 412,417 ****
--- 412,418 ----
#endif
#if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
static const char *restart_command = NULL;
+ static char *abs_restart_command = NULL;
#endif
static int found_iconic_arg = FALSE;
***************
*** 449,456 ****
char_u buf[MAXPATHL];
if (mch_FullName((char_u *)argv[0], buf, (int)sizeof(buf), TRUE) == OK)
! /* Tiny leak; doesn't matter, and usually we don't even get here */
! restart_command = (char *)vim_strsave(buf);
}
#endif
--- 450,456 ----
char_u buf[MAXPATHL];
if (mch_FullName((char_u *)argv[0], buf, (int)sizeof(buf), TRUE) == OK)
! abs_restart_command = (char *)vim_strsave(buf);
}
#endif
***************
*** 611,616 ****
--- 611,619 ----
gui_mch_free_all()
{
vim_free(gui_argv);
+ #if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
+ vim_free(abs_restart_command);
+ #endif
}
#endif
***************
*** 1678,1684 ****
offshoot = dx > dy ? dx : dy;
! /* Make a linearly declaying timer delay with a threshold of 5 at a
* distance of 127 pixels from the main window.
*
* One could think endlessly about the most ergonomic variant here.
--- 1681,1687 ----
offshoot = dx > dy ? dx : dy;
! /* Make a linearly decaying timer delay with a threshold of 5 at a
* distance of 127 pixels from the main window.
*
* One could think endlessly about the most ergonomic variant here.
***************
*** 2314,2320 ****
* Also pass the window role to give the WM something to match on.
* The role is set in gui_mch_open(), thus should _never_ be NULL. */
i = 0;
! argv[i++] = restart_command;
argv[i++] = "-f";
argv[i++] = "-g";
# ifdef HAVE_GTK2
--- 2317,2323 ----
* Also pass the window role to give the WM something to match on.
* The role is set in gui_mch_open(), thus should _never_ be NULL. */
i = 0;
! argv[i++] = abs_restart_command ? abs_restart_command : restart_command;
argv[i++] = "-f";
argv[i++] = "-g";
# ifdef HAVE_GTK2
***************
*** 2964,2970 ****
/* At start-up, don't try to set the hints until the initial
* values have been used (those that dictate our initial size)
! * Let forced (i.e., correct) values thruogh always.
*/
if (!(force_width && force_height) && init_window_hints_state > 0)
{
--- 2967,2973 ----
/* At start-up, don't try to set the hints until the initial
* values have been used (those that dictate our initial size)
! * Let forced (i.e., correct) values through always.
*/
if (!(force_width && force_height) && init_window_hints_state > 0)
{
***************
*** 3784,3790 ****
#endif
if (gtk_socket_id != 0)
! /* make sure keybord input can go to the drawarea */
GTK_WIDGET_SET_FLAGS(gui.drawarea, GTK_CAN_FOCUS);
/*
--- 3787,3793 ----
#endif
if (gtk_socket_id != 0)
! /* make sure keyboard input can go to the drawarea */
GTK_WIDGET_SET_FLAGS(gui.drawarea, GTK_CAN_FOCUS);
/*
***************
*** 4863,4869 ****
styled_font[1] = &gui.ital_font;
styled_font[2] = &gui.boldital_font;
! /* First free whatever was freviously there. */
for (i = 0; i < 3; ++i)
if (*styled_font[i])
{
--- 4866,4872 ----
styled_font[1] = &gui.ital_font;
styled_font[2] = &gui.boldital_font;
! /* First free whatever was previously there. */
for (i = 0; i < 3; ++i)
if (*styled_font[i])
{
Index: nbdebug.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/nbdebug.c,v
retrieving revision 1.4
diff -c -r1.4 nbdebug.c
*** nbdebug.c 24 Jun 2008 21:54:30 -0000 1.4
--- nbdebug.c 7 Feb 2009 09:44:53 -0000
***************
*** 33,39 ****
u_int nb_dlevel = 0; /* nb_debug verbosity level */
void nbdb(char *, ...);
! void nbtrace(char *, ...);
static int lookup(char *);
#ifdef USE_NB_ERRORHANDLER
--- 33,41 ----
u_int nb_dlevel = 0; /* nb_debug verbosity level */
void nbdb(char *, ...);
! #if 0
! void nbtrace(char *, ...);
! #endif
static int lookup(char *);
#ifdef USE_NB_ERRORHANDLER
***************
*** 101,107 ****
!
void
nbtrace(
char *fmt,
--- 103,109 ----
! #if 0
void
nbtrace(
char *fmt,
***************
*** 117,122 ****
--- 119,125 ----
}
} /* end nbtrace */
+ #endif
void
***************
*** 135,141 ****
} /* end nbdbg */
!
void
nbprt(
char *fmt,
--- 138,144 ----
} /* end nbdbg */
! #if 0
void
nbprt(
char *fmt,
***************
*** 151,156 ****
--- 154,160 ----
}
} /* end nbprt */
+ #endif
static int
Index: netbeans.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/netbeans.c,v
retrieving revision 1.37
diff -c -r1.37 netbeans.c
*** netbeans.c 6 Jan 2009 15:13:56 -0000 1.37
--- netbeans.c 7 Feb 2009 09:42:59 -0000
***************
*** 2318,2324 ****
}
if (pos)
{
! coloncmd(":sign place %d line=%d name=%d buffer=%d",
serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
if (typeNum == curPCtype)
coloncmd(":sign jump %d buffer=%d", serNum,
--- 2318,2324 ----
}
if (pos)
{
! coloncmd(":sign place %d line=%ld name=%d buffer=%d",
serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
if (typeNum == curPCtype)
coloncmd(":sign jump %d buffer=%d", serNum,
***************
*** 2422,2428 ****
GUARDED) == 0)
{
coloncmd(
! ":sign place %d line=%d name=%d buffer=%d",
guardId++, lnum, GUARDED,
buf->bufp->b_fnum);
}
--- 2422,2428 ----
GUARDED) == 0)
{
coloncmd(
! ":sign place %d line=%ld name=%d buffer=%d",
guardId++, lnum, GUARDED,
buf->bufp->b_fnum);
}