cedric pushed a commit to branch efl-1.8. http://git.enlightenment.org/core/efl.git/commit/?id=4b8c999df6317723415eed9f01c943ab6b9c6e88
commit 4b8c999df6317723415eed9f01c943ab6b9c6e88 Author: Julien Isorce <[email protected]> Date: Thu Aug 21 18:40:01 2014 +0900 xlib: fix undefined behaviour when freeing colormap too early Summary: On Ubuntu 14.04 it makes a 32 bit depth window un-responsive to any XEvent. Reviewers: cedric, raster Reviewed By: raster Subscribers: raster, capOM, cedric Differential Revision: https://phab.enlightenment.org/D1236 --- src/lib/ecore_x/xlib/ecore_x_window.c | 1 - src/modules/evas/engines/software_x11/evas_xlib_outbuf.c | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_x/xlib/ecore_x_window.c b/src/lib/ecore_x/xlib/ecore_x_window.c index 860e2bf..ba73ccf 100644 --- a/src/lib/ecore_x/xlib/ecore_x_window.c +++ b/src/lib/ecore_x/xlib/ecore_x_window.c @@ -1669,7 +1669,6 @@ _ecore_x_window_argb_internal_new(Ecore_X_Window parent, CWWinGravity, &attr); if (_ecore_xlib_sync) ecore_x_sync(); - XFreeColormap(_ecore_x_disp, attr.colormap); if (parent == DefaultRootWindow(_ecore_x_disp)) ecore_x_window_defaults_set(win); diff --git a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c index a189acc..db8f655 100644 --- a/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c +++ b/src/modules/evas/engines/software_x11/evas_xlib_outbuf.c @@ -180,6 +180,10 @@ evas_software_xlib_outbuf_free(Outbuf *buf) if (buf->priv.pal) evas_software_xlib_x_color_deallocate(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.cmap, buf->priv.x11.xlib.vis, buf->priv.pal); + + /* safe because no effect on the default colormap */ + XFreeColormap (buf->priv.x11.xlib.disp, buf->priv.x11.xlib.cmap); + eina_array_flush(&buf->priv.onebuf_regions); free(buf); _clear_xob(0); --
