> On 14/01/11 13:22, Denton Thomas wrote:
>
> > Agreed, setting to NULL at declaration is pointless! Line 546 is
> > fine.
> >
> > Also agreed that it is smart to check xim_styles before use, and to
> > set it to NULL after. The xlib doc does not specify whether XFree
> > will or won't set incoming values to NULL. Probably safer.
>
> Denton, I have pushed a variant of your patch into svn at r8278.
> Please check it and let us know how it looks.
> Ditto for anyone else who's listening of course!
>
> Cheers,
> --
> Ian
>
>
>
Thanks for adding the conditions/checks at each return statment, Ian.
I should have suggested removing a couple lines, however -
XFree() must happen at the end of fl_init_xim() whether or not the if
condition fails at 564, so the new/final XFree() call is basically replacing
line 567. I suggest we cut the XFree() at 567 and keep the new check/free at
the end.
New r8278 below.
Cheers -
DLT
===================================================================
--- branches/branch-1.3/src/Fl_x.cxx 2011-01-14 11:48:18 UTC (rev 8277)
+++ branches/branch-1.3/src/Fl_x.cxx 2011-01-14 22:06:41 UTC (rev 8278)
@@ -550,6 +550,8 @@
&xim_styles, NULL, NULL);
} else {
Fl::warning("XOpenIM() failed\n");
+ // if xim_styles is allocated, free it now
+ if(xim_styles) XFree(xim_styles);
return;
}
@@ -559,14 +561,17 @@
Fl::warning("No XIM style found\n");
XCloseIM(fl_xim_im);
fl_xim_im = NULL;
+ // if xim_styles is allocated, free it now
+ if(xim_styles) XFree(xim_styles);
return;
}
if (!fl_xim_ic) {
Fl::warning("XCreateIC() failed\n");
XCloseIM(fl_xim_im);
- XFree(xim_styles);
fl_xim_im = NULL;
}
+ // if xim_styles is still allocated, free it now
+ if(xim_styles) XFree(xim_styles);
}
void fl_open_display() {
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk