hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=abbfd23a22716e190f0cafae99cd1ce6a67f8cae

commit abbfd23a22716e190f0cafae99cd1ce6a67f8cae
Author: Jaehyun Cho <[email protected]>
Date:   Wed May 28 14:32:39 2014 +0900

    gl_x11/evas_engine: Prevent dereference before NULL check
    
    Summary: re->win pointer was not compared with NULL pointer before re->win 
was referenced.
    
    Reviewers: Hermet
    
    Reviewed By: Hermet
    
    CC: seoz, cedric
    
    Differential Revision: https://phab.enlightenment.org/D910
---
 src/modules/evas/engines/gl_x11/evas_engine.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c 
b/src/modules/evas/engines/gl_x11/evas_engine.c
index 37faaa5..a4391b5 100644
--- a/src/modules/evas/engines/gl_x11/evas_engine.c
+++ b/src/modules/evas/engines/gl_x11/evas_engine.c
@@ -929,7 +929,7 @@ eng_setup(Evas *eo_e, void *in)
    else
      {
         re = e->engine.data.output;
-        if (_re_wincheck(re))
+        if (re->win && _re_wincheck(re))
           {
              if ((re->info->info.display != re->win->disp) ||
                  (re->info->info.drawable != re->win->win) ||
@@ -939,15 +939,10 @@ eng_setup(Evas *eo_e, void *in)
                  (re->info->info.depth != re->win->depth) ||
                  (re->info->info.destination_alpha != re->win->alpha))
                {
-                  int inc = 0;
+                  re->win->gl_context->references++;
+                  eng_window_free(re->win);
+                  gl_wins--;
 
-                  if (re->win)
-                    {
-                       re->win->gl_context->references++;
-                       eng_window_free(re->win);
-                       inc = 1;
-                       gl_wins--;
-                    }
                   re->w = e->output.w;
                   re->h = e->output.h;
                   re->win = eng_window_new(re->info->info.display,
@@ -962,9 +957,11 @@ eng_setup(Evas *eo_e, void *in)
                                            re->info->info.destination_alpha,
                                            re->info->info.rotation);
                   eng_window_use(re->win);
-                  if (re->win) gl_wins++;
-                  if ((re->win) && (inc))
-                     re->win->gl_context->references--;
+                  if (re->win)
+                    {
+                       gl_wins++;
+                       re->win->gl_context->references--;
+                    }
                }
              else if ((re->win->w != e->output.w) ||
                       (re->win->h != e->output.h) ||

-- 


Reply via email to