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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs