Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/canvas


Modified Files:
        evas_object_textblock.c 


Log Message:


avoid infinite loop more aggressively?
and some more optimising...

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_textblock.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- evas_object_textblock.c     1 Feb 2005 08:23:53 -0000       1.18
+++ evas_object_textblock.c     1 Feb 2005 13:53:40 -0000       1.19
@@ -518,7 +518,7 @@
        
        /* FIXME: if we overflow then this would be punted to an overflow */
        /* object instead */
-       if (layout.line.y >= h) return;
+       if (layout.line.y >= h) goto breakout;
        node = (Node *)l;
 //     printf("NODE: FMT:\"%s\" TXT:\"%s\"\n", node->format, node->text);
        if (node->format)
@@ -547,6 +547,11 @@
 
             text = strdup(node->text);
             new_node:
+            if (layout.line.y >= h)
+              {
+                 free(text);
+                 goto breakout;
+              }
             lnode = calloc(1, sizeof(Layout_Node));
             evas_object_textblock_layout_copy(&layout, &(lnode->layout));
             if (lnode->layout.font.name)
@@ -665,14 +670,18 @@
                         {
                            /* FIXME: this node would overflow to the next 
textblock */
                         }
-                      layout.line.y += lnode->layout.line.mascent + 
lnode->layout.line.mdescent;
+                      layout.line.y += layout.line.mascent + 
layout.line.mdescent;
                       text = text2;
                       /* still more text to go */
-                      goto new_node;
+                      if ((layout.line.mascent + layout.line.mdescent) > 0)
+                        goto new_node;
+                      else
+                        free(text);
                    }
               }
          }
      }
+   breakout:
    evas_object_textblock_layout_clear(obj, &layout);
 }
 




-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to