diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2016-12-07 19:24:44 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2016-12-07 19:24:44 +0900 |
commit | fcef8d8392b8c8d1d7b96baacaf5e7e89fcf6b45 (patch) | |
tree | 8d213ceb4f78ae2c0a4860b7357c2e26fde6ed04 /src/modules | |
parent | 4707c86a830e929c10827584bc529aa549cd75a8 (diff) | |
download | efl-fcef8d8392b8c8d1d7b96baacaf5e7e89fcf6b45.tar.gz |
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
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h b/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h index b716b6b418..59537c99d9 100644 --- a/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h +++ b/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h @@ -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); |