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 -- b...@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    ///

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui