Enlightenment CVS committal Author : kwo Project : e16 Module : epplets
Dir : e16/epplets/api Modified Files: epplet.c Log Message: Fix segv and mem leaks. =================================================================== RCS file: /cvs/e/e16/epplets/api/epplet.c,v retrieving revision 1.136 retrieving revision 1.137 diff -u -3 -r1.136 -r1.137 --- epplet.c 13 Apr 2006 08:26:31 -0000 1.136 +++ epplet.c 13 Apr 2006 11:07:27 -0000 1.137 @@ -2135,14 +2135,6 @@ g->contents = Estrdup(contents); g->cursor_pos = contents ? strlen(contents) : 0; - if (contents) - { - Epplet_textbox_textsize(g, &contents_w, &contents_h, contents); - g->to_cursor = contents_w; - } - else - g->to_cursor = 0; - g->x_offset = 0; g->w = w; g->h = h; @@ -2154,6 +2146,14 @@ g->image = Epplet_find_file(image); g->hilited = 0; + if (contents) + { + Epplet_textbox_textsize(g, &contents_w, &contents_h, contents); + g->to_cursor = contents_w; + } + else + g->to_cursor = 0; + attr.backing_store = NotUseful; attr.override_redirect = False; attr.colormap = imlib_context_get_colormap(); @@ -2399,6 +2399,8 @@ Epplet_textbox_textsize(eg, &x, &h, s); g->to_cursor = x; + free(s); + if (h == 0) Epplet_textbox_textsize(eg, &x, &h, "X"); @@ -2445,6 +2447,7 @@ XDrawRectangle(disp, g->win, gc, g->to_cursor + g->x_offset + 2, 2, CRSR_WDTH, g->h - 4); #endif + XFreeGC(disp, gc); } int @@ -4260,6 +4263,8 @@ index = last_index = length / 2; delta = last_index / 2; + Epplet_textbox_textsize(g, &text_w, &text_h, g->contents); + while (delta >= 1.0) { index = last_index; @@ -4278,6 +4283,8 @@ { if (left) { + if (index <= 0) + break; buf = g->contents[index - 1]; g->contents[index - 1] = 0; Epplet_textbox_textsize(g, &text_wl, &text_h, g->contents); @@ -4285,6 +4292,8 @@ } if (right) { + if (index >= length) + break; buf = g->contents[index + 1]; g->contents[index + 1] = 0; Epplet_textbox_textsize(g, &text_wr, &text_h, g->contents); @@ -4738,6 +4747,8 @@ g = (GadPopupButton *) gadget; XDestroyWindow(disp, g->win); XDeleteContext(disp, g->win, xid_context); + if (g->std) + free(g->std); if (g->label) free(g->label); if (g->image) ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs