evas: add a few null checks for e->engine.data.output
authorMike Blumenkrantz <zmike@osg.samsung.com>
Thu, 5 May 2016 14:33:28 +0000 (10:33 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Thu, 5 May 2016 14:49:30 +0000 (10:49 -0400)
this can be null if engine info has not yet been set or if engine info
has been unset, leading to engine crashes. instead of adding null checks in
every engine, better to add the checks to the originating functions

someone with time to kill should go through all the EAPI functions and
add more checks

src/lib/evas/canvas/evas_font_dir.c
src/lib/evas/canvas/evas_object_image.c

index bfab21f..0f1c27c 100644 (file)
@@ -1469,7 +1469,7 @@ _evas_canvas_font_hinting_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
 EOLIAN Eina_Bool
 _evas_canvas_font_hinting_can_hint(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Evas_Font_Hinting_Flags hinting)
 {
-   if (e->engine.func->font_hinting_can_hint)
+   if (e->engine.func->font_hinting_can_hint && e->engine.data.output)
      return e->engine.func->font_hinting_can_hint(e->engine.data.output,
                                                  hinting);
    else return EINA_FALSE;
@@ -1480,7 +1480,8 @@ _evas_canvas_font_cache_flush(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
 {
    evas_canvas_async_block(e);
    evas_render_rendering_wait(e);
-   e->engine.func->font_cache_flush(e->engine.data.output);
+   if (e->engine.data.output)
+     e->engine.func->font_cache_flush(e->engine.data.output);
 }
 
 EOLIAN void
@@ -1489,14 +1490,16 @@ _evas_canvas_font_cache_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, int size)
    if (size < 0) size = 0;
    evas_canvas_async_block(e);
    evas_render_rendering_wait(e);
-   e->engine.func->font_cache_set(e->engine.data.output, size);
+   if (e->engine.data.output)
+     e->engine.func->font_cache_set(e->engine.data.output, size);
 }
 
 EOLIAN int
 _evas_canvas_font_cache_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
 {
-   return e->engine.func->font_cache_get(e->engine.data.output);
-
+   if (e->engine.data.output)
+     return e->engine.func->font_cache_get(e->engine.data.output);
+   return -1;
 }
 
 EOLIAN Eina_List*
index 88fa6b1..5b309dd 100644 (file)
@@ -1119,7 +1119,8 @@ _evas_canvas_image_cache_flush(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
 {
    evas_canvas_async_block(e);
    evas_render_rendering_wait(e);
-   e->engine.func->image_cache_flush(e->engine.data.output);
+   if (e->engine.data.output)
+     e->engine.func->image_cache_flush(e->engine.data.output);
 }
 
 EOLIAN void
@@ -1167,13 +1168,16 @@ _evas_canvas_image_cache_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, int size
    if (size < 0) size = 0;
    evas_canvas_async_block(e);
    evas_render_rendering_wait(e);
-   e->engine.func->image_cache_set(e->engine.data.output, size);
+   if (e->engine.data.output)
+     e->engine.func->image_cache_set(e->engine.data.output, size);
 }
 
 EOLIAN int
 _evas_canvas_image_cache_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
 {
-   return e->engine.func->image_cache_get(e->engine.data.output);
+   if (e->engine.data.output)
+     return e->engine.func->image_cache_get(e->engine.data.output);
+   return -1;
 }
 
 EOLIAN Eina_Bool