all repos — fluxbox @ 0530d278e7f209a4f911d0a362177c694eb9368b

custom fork of the fluxbox windowmanager

fixed memory leak when XCreateImage fail, thanks php-coder
fluxgen fluxgen
commit

0530d278e7f209a4f911d0a362177c694eb9368b

parent

ddd2233f5a7f6b3793db733f9517bab2e1c76fa2

1 files changed, 11 insertions(+), 3 deletions(-)

jump to
M src/FbTk/XFontImp.ccsrc/FbTk/XFontImp.cc

@@ -221,7 +221,7 @@ boxlen/2 - lbearing,

boxlen/2 - descent, text, 1); // reserve memory for first XImage - vertdata = new unsigned char[vert_len * vert_h]; + vertdata = (unsigned char *)calloc((unsigned)(vert_len * vert_h), 1); XImage *I1 = XCreateImage(dpy, DefaultVisual(dpy, screen), 1, XYBitmap,

@@ -229,7 +229,11 @@ 0, (char *)vertdata,

vert_w, vert_h, 8, 0); if (I1 == None) { - cerr<<"RotFont: "<<_FBTKTEXT(Error, CreateXImage, "Cant create XImage", "XCreateImage failed for some reason")<<"."<<endl; + cerr<<"RotFont: "<<_FBTKTEXT(Error, CreateXImage, + "Cant create XImage", + "XCreateImage failed for some reason") + <<"."<<endl; + free(vertdata); delete m_rotfont; m_rotfont = 0; return;

@@ -267,7 +271,11 @@ XImage *I2 = XCreateImage(dpy, DefaultVisual(dpy, screen), 1, XYBitmap, 0,

(char *)bitdata, bit_w, bit_h, 8, 0); if (I2 == None) { - cerr<<"XFontImp: "<<_FBTKTEXT(Error, CreateXImage, "Cant create XImage", "XCreateImage failed for some reason")<<"."<<endl; + cerr<<"XFontImp: "<<_FBTKTEXT(Error, CreateXImage, + "Cant create XImage", + "XCreateImage failed for some reason") + <<"."<<endl; + free(bitdata); delete m_rotfont; m_rotfont = 0; return;