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