e_comp_object: fix possible infinite while loop 13/102513/1
authorMinJeong Kim <minjjj.kim@samsung.com>
Tue, 6 Dec 2016 04:50:42 +0000 (13:50 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Tue, 6 Dec 2016 04:50:54 +0000 (13:50 +0900)
Change-Id: Iababe49bf70ffc0b0ea1ea5562142ec15ae76253
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
src/bin/e_comp_object.c

index 494702d..d66a8d5 100644 (file)
@@ -1567,14 +1567,16 @@ _e_comp_intercept_stack_helper(E_Comp_Object *cw, Evas_Object *stack, E_Comp_Obj
    /* find new object for stacking if cw2 is on state of layer_pending */
    if ((cw2) && (cw2->ec->layer_pending))
      {
-        E_Client *new_stack = NULL;
+        E_Client *new_stack = NULL, *current_ec = NULL;
+        current_ec = cw2->ec;
         if (raising)
           {
-             while ((new_stack = e_client_below_get(cw2->ec)))
+             while ((new_stack = e_client_below_get(current_ec)))
                {
                   if (new_stack == cw->ec) continue;
                   if (new_stack->layer != cw2->ec->layer) break;
                   if (!new_stack->layer_pending) break;
+                  current_ec = new_stack;
                }
              if ((new_stack) && (new_stack->layer == cw2->ec->layer))
                stack = new_stack->frame;
@@ -1588,11 +1590,12 @@ _e_comp_intercept_stack_helper(E_Comp_Object *cw, Evas_Object *stack, E_Comp_Obj
           }
         else
           {
-             while ((new_stack = e_client_above_get(cw2->ec)))
+             while ((new_stack = e_client_above_get(current_ec)))
                {
                   if (new_stack == cw->ec) continue;
                   if (new_stack->layer != cw2->ec->layer) break;
                   if (!new_stack->layer_pending) break;
+                  current_ec = new_stack;
                }
              if ((new_stack) && (new_stack->layer == cw2->ec->layer))
                stack = new_stack->frame;