home *** CD-ROM | disk | FTP | other *** search
- To: vim-dev@vim.org
- Subject: Patch 7.2.125
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- Mime-Version: 1.0
- Content-Type: text/plain; charset=ISO-8859-1
- Content-Transfer-Encoding: 8bit
- ------------
-
- Patch 7.2.125
- Problem: Leaking memory when reading XPM bitmap for a sign.
- Solution: Don't allocate the memory twice. (Dominique Pelle)
- Files: src/gui_x11.c
-
-
- *** ../vim-7.2.124/src/gui_x11.c Wed Nov 12 13:07:48 2008
- --- src/gui_x11.c Sun Feb 22 21:58:19 2009
- ***************
- *** 1587,1592 ****
- --- 1587,1594 ----
- XtCloseDisplay(gui.dpy);
- gui.dpy = NULL;
- vimShell = (Widget)0;
- + vim_free(gui_argv);
- + gui_argv = NULL;
- }
-
- /*
- ***************
- *** 1761,1766 ****
- --- 1763,1770 ----
- * says that this isn't needed when exiting, so just skip it. */
- XtCloseDisplay(gui.dpy);
- #endif
- + vim_free(gui_argv);
- + gui_argv = NULL;
- }
-
- /*
- ***************
- *** 3439,3485 ****
- char_u *signfile;
- {
- XpmAttributes attrs;
- ! XImage *sign;
- int status;
-
- /*
- * Setup the color substitution table.
- */
- - sign = NULL;
- if (signfile[0] != NUL && signfile[0] != '-')
- {
- ! sign = (XImage *)alloc(sizeof(XImage));
- ! if (sign != NULL)
- {
- ! XpmColorSymbol color[5] =
- ! {
- ! {"none", NULL, 0},
- ! {"iconColor1", NULL, 0},
- ! {"bottomShadowColor", NULL, 0},
- ! {"topShadowColor", NULL, 0},
- ! {"selectColor", NULL, 0}
- ! };
- ! attrs.valuemask = XpmColorSymbols;
- ! attrs.numsymbols = 2;
- ! attrs.colorsymbols = color;
- ! attrs.colorsymbols[0].pixel = gui.back_pixel;
- ! attrs.colorsymbols[1].pixel = gui.norm_pixel;
- ! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
- &sign, NULL, &attrs);
- !
- ! if (status == 0)
- ! {
- ! /* Sign width is fixed at two columns now.
- ! if (sign->width > gui.sign_width)
- ! gui.sign_width = sign->width + 8; */
- ! }
- ! else
- ! {
- ! vim_free(sign);
- ! sign = NULL;
- ! EMSG(_(e_signdata));
- ! }
- }
- }
-
- return (void *)sign;
- --- 3443,3479 ----
- char_u *signfile;
- {
- XpmAttributes attrs;
- ! XImage *sign = NULL;
- int status;
-
- /*
- * Setup the color substitution table.
- */
- if (signfile[0] != NUL && signfile[0] != '-')
- {
- ! XpmColorSymbol color[5] =
- {
- ! {"none", NULL, 0},
- ! {"iconColor1", NULL, 0},
- ! {"bottomShadowColor", NULL, 0},
- ! {"topShadowColor", NULL, 0},
- ! {"selectColor", NULL, 0}
- ! };
- ! attrs.valuemask = XpmColorSymbols;
- ! attrs.numsymbols = 2;
- ! attrs.colorsymbols = color;
- ! attrs.colorsymbols[0].pixel = gui.back_pixel;
- ! attrs.colorsymbols[1].pixel = gui.norm_pixel;
- ! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
- &sign, NULL, &attrs);
- ! if (status == 0)
- ! {
- ! /* Sign width is fixed at two columns now.
- ! if (sign->width > gui.sign_width)
- ! gui.sign_width = sign->width + 8; */
- }
- + else
- + EMSG(_(e_signdata));
- }
-
- return (void *)sign;
- ***************
- *** 3489,3496 ****
- gui_mch_destroy_sign(sign)
- void *sign;
- {
- ! XFree(((XImage *)sign)->data);
- ! vim_free(sign);
- }
- #endif
-
- --- 3483,3489 ----
- gui_mch_destroy_sign(sign)
- void *sign;
- {
- ! XDestroyImage((XImage*)sign);
- }
- #endif
-
- *** ../vim-7.2.124/src/version.c Mon Feb 23 00:53:35 2009
- --- src/version.c Tue Feb 24 04:09:33 2009
- ***************
- *** 678,679 ****
- --- 678,681 ----
- { /* Add new patch number below this line */
- + /**/
- + 125,
- /**/
-
- --
- I have a watch cat! Just break in and she'll watch.
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
- /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
- \\\ download, build and distribute -- http://www.A-A-P.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
-