summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-12-07 19:24:44 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-12-07 19:24:44 +0900
commitfcef8d8392b8c8d1d7b96baacaf5e7e89fcf6b45 (patch)
tree8d213ceb4f78ae2c0a4860b7357c2e26fde6ed04 /src/modules
parent4707c86a830e929c10827584bc529aa549cd75a8 (diff)
downloadefl-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.h7
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);