discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=600a739f9134eb3541e19c2e4c35a86848c7b8eb
commit 600a739f9134eb3541e19c2e4c35a86848c7b8eb Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> Date: Thu Jul 19 01:58:00 2018 +0900 e wl - fix e pixmap tracking to remove from both aliases and pixmaps on pixmap free only the pixmaps entry was deleted not the pixmaps hash one. this led to lookup of stale pixmaps in the aliases hash... and then a crash. also use the correct local type with the correct byte order as well. this has probably been an issue for a while but now internal windows should work much better without crashes. @fix --- src/bin/e_pixmap.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index 346b2726a..4c667757c 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -297,7 +297,28 @@ e_pixmap_free(E_Pixmap *cp) if (!cp) return 0; if (--cp->refcount) return cp->refcount; e_pixmap_image_clear(cp, EINA_FALSE); - eina_hash_del_by_key(pixmaps[cp->type], &cp->win); + switch (cp->type) + { + case E_PIXMAP_TYPE_X: +#ifndef HAVE_WAYLAND_ONLY + { + Ecore_X_Window xwin = cp->win; + eina_hash_del_by_key(pixmaps[cp->type], &xwin); + eina_hash_del_by_key(aliases[cp->type], &xwin); + } +#endif + break; + case E_PIXMAP_TYPE_WL: +#ifdef HAVE_WAYLAND + { + int64_t id = cp->win; + eina_hash_del_by_key(pixmaps[cp->type], &id); + eina_hash_del_by_key(aliases[cp->type], &id); + } +#endif + break; + default: break; + } return 0; } --