evas - software generic - fix crash when buffer is freed when its the same

evas_render_engine_software_generic_update(0 definitely is wrong where
it wants to always free the outbuf even if the buffer passed in is the
same one and thus it ends up being freed and now invalid. fix it

@fix
This commit is contained in:
Carsten Haitzler 2016-12-07 19:24:44 +09:00
parent 4707c86a83
commit fcef8d8392
1 changed files with 5 additions and 2 deletions

View File

@ -177,8 +177,11 @@ evas_render_engine_software_generic_update(Render_Engine_Software_Generic *re,
Outbuf *ob,
int w, int h)
{
if (re->ob) re->outbuf_free(re->ob);
re->ob = ob;
if ((re->ob) && (re->ob != ob))
{
re->outbuf_free(re->ob);
re->ob = ob;
}
evas_common_tilebuf_free(re->tb);
re->tb = evas_common_tilebuf_new(w, h);