raster pushed a commit to branch master.

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

commit 3cb947d1a5202d4ca6f56d1d38b0d3a2cda05ce8
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Thu Feb 2 08:50:11 2017 +0900

    evas grid smart - fix divide by 0
    
    if object happens to be 0x0 then we can get a divide by 0... fix!
    
    @fix
---
 src/lib/evas/canvas/evas_object_grid.c | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_grid.c 
b/src/lib/evas/canvas/evas_object_grid.c
index 12e5b47..9d44aa6 100644
--- a/src/lib/evas/canvas/evas_object_grid.c
+++ b/src/lib/evas/canvas/evas_object_grid.c
@@ -229,18 +229,34 @@ _evas_object_grid_smart_calculate(Evas_Object *o)
      {
         long long x1, y1, x2, y2;
 
-        if (!mirror)
+        if (vwl > 0)
           {
-             x1 = xl + ((wl * (long long)opt->x) / vwl);
-             x2 = xl + ((wl * (long long)(opt->x + opt->w)) / vwl);
+             if (!mirror)
+               {
+                  x1 = xl + ((wl * (long long)opt->x) / vwl);
+                  x2 = xl + ((wl * (long long)(opt->x + opt->w)) / vwl);
+               }
+             else
+               {
+                  x1 = xl + ((wl * (vwl - (long long)(opt->x + opt->w))) / 
vwl);
+                  x2 = xl + ((wl * (vwl - (long long)opt->x)) / vwl);
+               }
           }
         else
           {
-             x1 = xl + ((wl * (vwl - (long long)(opt->x + opt->w))) / vwl);
-             x2 = xl + ((wl * (vwl - (long long)opt->x)) / vwl);
+             x1 = xl;
+             x2 = xl;
+          }
+        if (vhl > 0)
+          {
+             y1 = yl + ((hl * (long long)opt->y) / vhl);
+             y2 = yl + ((hl * (long long)(opt->y + opt->h)) / vhl);
+          }
+        else
+          {
+             y1 = yl;
+             y2 = yl;
           }
-        y1 = yl + ((hl * (long long)opt->y) / vhl);
-        y2 = yl + ((hl * (long long)(opt->y + opt->h)) / vhl);
         evas_object_move(opt->obj, x1, y1);
         evas_object_resize(opt->obj, x2 - x1, y2 - y1);
      }

-- 


Reply via email to